2011-11-03 24 views
7

Tôi đang sử dụng bộ lọc văn bản trên ListView và tôi muốn loại bỏ chế độ xem bật lên cho biết văn bản bộ lọc là gì. Có cách nào để xóa chế độ xem này không?Làm cách nào để xóa văn bản bật lên khỏi bộ lọc danh sách xem?

Một số mã ví dụ:

ArrayList<String> buildingNames = new ArrayList<String>(); 
    ListView list = (ListView)findViewById(R.id.list); 

    list.setAdapter(new ArrayAdapter<String>(this, R.layout.menu_item, buildingNames)); 
    list.setTextFilterEnabled(true); 

    list.setFilterText("test_filter"); 

Khi tôi đặt văn bản lọc, một cái nhìn thực sự xấu xí bật lên ở dưới cùng của ListView cho thấy những gì các văn bản lọc hiện nay là:

ListView filter text popup

+0

Vui lòng cung cấp một số mã nguồn ví dụ mà bạn đang sử dụng bị cô lập để hiển thị sự cố bạn đang gặp phải. – pkk

Trả lời

8

tôi tìm thấy câu trả lời ở đây: http://markmail.org/message/7uju6bmmaswag2lu:

Bằng cách gọi setTextFilterEnabled(), bạn yêu cầu cửa sổ bật lên này. Nếu bạn không muốn, hãy tắt lọc văn bản. Đây là một tính năng tương tác cho người dùng. Nó không có nghĩa là được sử dụng theo chương trình. Nếu bạn muốn để programatically lọc adapter của bạn, hãy gọi getFilter() trên bộ chuyển đổi của bạn trực tiếp (adaptor của bạn hỗ trợ lọc.)

Romain Guy

Vì vậy, thay vì sử dụng setTextFilterEnabled bạn cần phải làm việc với lọc trực tiếp như vậy:

CustomAdapter customAdapter = (customAdapter)myListView.getAdapter(); 
Filter filter = customAdapter .getFilter(); 
filter.filter("search string"); 
0

Cố gắng làm thay đổi này

@Override 
     public boolean onQueryTextChange(String newText) { 
      System.out.println("tap"); 
      yourAdapter ca = (yourAdapter)listview.getAdapter(); 

      if (TextUtils.isEmpty(newText)) { 
       System.out.println("isEmpty"); 
       //listview.clearTextFilter(); 
       ca.getFilter().filter(null); 
      } else { 

       ca.getFilter().filter(newText); 
       //listview.setFilterText(newText); 

      } 
      return true; 
     } 
Các vấn đề liên quan