【问题标题】: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 没有被调用。谢谢。

【问题讨论】:

    标签: android listview filter android-edittext


    【解决方案1】:

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

    【讨论】:

    • 非常感谢。我怀疑这是罪魁祸首,这解决了我的问题。
    • 您能解释一下如何覆盖 getCount() 吗? Filter 对象没有计数,但 FilterResults 对象有。
    • 你能给我发链接或任何关于android中listview过滤器的参考
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多