2011-04-14 70 views
3

我有一個編輯文本作爲搜索欄和一個列表視圖,用於過濾我鍵入的文本,但不幸的是,它不會過濾列表視圖。我已經使用了對象Friend的自定義數組適配器。 朋友對象有姓名,地址和電話號碼但我只想過濾它的名字。在我的活動......從編輯文本中過濾列表視圖

searchBarTextView.addTextChangedListener(new TextWatcher() { 
@Override 
public void onTextChanged(CharSequence s, int start, int before, int count) { 
    friendListAdapter.getFilter().filter(s); 
}} 

雖然適配器...

 
    @Override 
    public Filter getFilter() { 
     Log.d(TAG, "begin getFilter"); 
     if(newFilter == null) { 
      newFilter = new Filter() { 
       @Override 
       protected void publishResults(CharSequence constraint, FilterResults results) { 
        // TODO Auto-generated method stub 
        Log.d(TAG, "publishResults"); 
        notifyDataSetChanged(); 
       }

@Override protected FilterResults performFiltering(CharSequence constraint) { Log.d(TAG, "performFiltering"); constraint = constraint.toString().toLowerCase(); Log.d(TAG, "constraint : "+constraint); List<ChatObject> filteredFriendList = new LinkedList<ChatObject>(); for(int i=0; i<friendList.size(); i++) { Friend newFriend = friendList.get(i); Log.d(TAG, "displayName : "+newFriend.getDisplayName().toLowerCase()); if(newFriend.getDisplayName().toLowerCase().contains(constraint)) { Log.d(TAG, "equals : "+newFriend.getDisplayName()); filteredFriendList.add(newFriend); } } FilterResults newFilterResults = new FilterResults(); newFilterResults.count = filteredFriendList.size(); newFilterResults.values = filteredFriendList; return newFilterResults; } }; } Log.d(TAG, "end getFilter"); return newFilter; }

可能有人請幫助我如何正確顯示濾波陣列適配器?我認爲notifyDataSetChanged沒有被調用。謝謝。

回答

4

我的問題已解決,發現我必須重寫getCount()getItem()

+1

非常感謝。我懷疑是這是罪魁禍首,這解決了我的問題。 – SemperFly 2011-06-18 23:13:57

+3

你能解釋你如何覆蓋getCount()嗎? Filter對象沒有計數,但是FilterResults對象有。 – ninjaneer 2011-08-15 07:16:40

+0

你可以給我發送鏈接或任何引用在Android的listview過濾器 – 2012-06-08 08:39:49

相關問題