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沒有被調用。謝謝。
非常感謝。我懷疑是這是罪魁禍首,這解決了我的問題。 – SemperFly 2011-06-18 23:13:57
你能解釋你如何覆蓋getCount()嗎? Filter對象沒有計數,但是FilterResults對象有。 – ninjaneer 2011-08-15 07:16:40
你可以給我發送鏈接或任何引用在Android的listview過濾器 – 2012-06-08 08:39:49