2012-11-21 48 views
0

我有一個帶有3個TextViews的ListView。我想構建一個過濾器來過濾第一個TextView。 但我構建的過濾器現在正在過濾ListView中的所有項目。 有什麼辦法只過濾一個特定的TextView?用於多個文本視圖的listview過濾器

 ... 
    filterText = (EditText) findViewById(R.building_list.search_box); 
    filterText.addTextChangedListener(filterTextWatcher); 
     ListAdapter adapter = new SimpleAdapter(this, menuItems, 
      R.layout.list_item, 
      new String[] {KEY_NAME, KEY_DESC, KEY_DATE, KEY_LINK }, new int[] { 
      R.id.name, R.id.desciption, R.id.date, R.id.link}); 
    Filter filterx = ((Filterable) adapter).getFilter(); 
    setListAdapter(adapter); 
     ... 
+0

缺省'SimpleAdapter'的默認'Filter'將使用行'Map'的所有列進行過濾。你需要實現你自己的過濾器,它將考慮只過濾第一個「TextView」的數據。或從類似的問題手動的方法http://stackoverflow.com/questions/13448691/android-listview-based-on-simpleadapter-includes-image-descriptions-when-searchi#comment18416730_13448691。 – Luksprog

回答

0

廣場三個TextView的一類叫做Data內容:

public class Data { 
    public final String text1; 
    public final String text2; 
    public final String text3; 

    public Data(String t1, String t2, String t3){ 
     this.text1 = t1; 
     this.text2 = t2; 
     this.text3 = t3; 
    } 

    @Override 
    public final String toString(){ 
     return text1; 
    } 
} 

現在使用Data對象的集合在你的適配器。默認Filterable適配器的實現使用其對象的toString()進行過濾,在本例中爲text1。因此,適配器將根據text1進行過濾。