【发布时间】:2011-08-05 06:00:38
【问题描述】:
我有一个作为搜索栏的编辑文本和一个过滤我输入的文本的列表视图,但不幸的是,它不会过滤列表视图。我使用了带有对象 Friend 的自定义数组适配器。 朋友对象有名字、地址和电话号码,但我只想过滤它的名字。在我的活动中...
searchBarTextView.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
friendListAdapter.getFilter().filter(s);
}}
在适配器中...
@覆盖 公共过滤器getFilter(){ Log.d(TAG, "开始 getFilter"); if(newFilter == null) { 新过滤器 = 新过滤器() { @覆盖 protected void publishResults(CharSequence 约束,FilterResults 结果) { // TODO 自动生成的方法存根 Log.d(TAG, "发布结果"); 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 没有被调用。谢谢。
【问题讨论】:
标签: android listview filter android-edittext