从编辑文本中过滤列表视图

Posted

技术标签:

【中文标题】从编辑文本中过滤列表视图【英文标题】:Filter list view from edit text 【发布时间】: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 没有被调用。谢谢。

【问题讨论】:

【参考方案1】:

我的问题解决了,发现我必须重写 getCount()getItem()

【讨论】:

非常感谢。我怀疑这是罪魁祸首,这解决了我的问题。 您能解释一下如何覆盖 getCount() 吗? Filter 对象没有计数,但 FilterResults 对象有。 你能给我发链接或任何关于android中listview过滤器的参考

以上是关于从编辑文本中过滤列表视图的主要内容,如果未能解决你的问题,请参考以下文章

如何从 postgresql 视图表中获取要显示的对象列表

列表视图过滤器 Android

通过编辑文本可搜索的列表视图

无法将查询另存为视图表

将编辑文本中的用户输入添加到列表视图中

DRF中五大扩展类及视图集的介绍