Android 我有一个使用自定义ArrayList适配器的ListView-what';实现过滤的最佳方式是什么?有人要学习示例代码吗?

Android 我有一个使用自定义ArrayList适配器的ListView-what';实现过滤的最佳方式是什么?有人要学习示例代码吗?,android,listview,filter,Android,Listview,Filter,主题说明了一切。我见过实现自定义过滤器的示例。Android开发者文档谈到实现一个可过滤的界面。有人对在ListView中实现过滤的最佳方法有什么建议和/或示例代码吗?此视频来自最新的Google I/O(2010),它被称为“ListView的世界” 在34:25,它解释了如何实现文本过滤器 此处,在第437行附近,使用示例: 享受:)我查看了其他开发人员提供的一些示例代码,通过简单地阅读ArrayAdapter的源代码,学到了很多东西。有了这些信息,我成功地实现了自己的过滤。由于这是我在

主题说明了一切。我见过实现自定义过滤器的示例。Android开发者文档谈到实现一个可过滤的界面。有人对在ListView中实现过滤的最佳方法有什么建议和/或示例代码吗?

此视频来自最新的Google I/O(2010),它被称为“ListView的世界”

在34:25,它解释了如何实现文本过滤器

此处,在第437行附近,使用示例:


享受:)

我查看了其他开发人员提供的一些示例代码,通过简单地阅读ArrayAdapter的源代码,学到了很多东西。有了这些信息,我成功地实现了自己的过滤。

由于这是我在谷歌上找到的第一个答案,我决定发布一些代码,以节省下一个人的时间。多亏了这个博客,我想出了代码:

public void buildSearchList{
lv2=新的ListView(此);
edi=新编辑文本(本);
edi.setHint(R.string.teclear);
edi.addTextChangedListener(filterTextWatcher);
lv2.addFooterView(取消按钮);
2级。addHeaderView(电子数据交换);
lv2.setAdapter(mAdapter2);
lv2.setTextFilterEnabled(true);
}
私有类EventAdapter扩展了ArrayAdapter实现
可过滤{
public ArrayList mEvents=null;
私有最终对象mLock=新对象();
专用滤波器;
公共事件适配器(上下文c、ArrayList客户端){
super(c,android.R.layout.test\u列表项);
mContext=c;
mEvents=客户;
过滤器=新的MyFilter();
}
@凌驾
公共过滤器getFilter(){
if(filter==null){
过滤器=新的MyFilter();
}
回流过滤器;
}
public int getCount(){
返回mEvents.size();
}
公共Articulo getItem(内部位置){
返回mEvents.get(位置);
}
公共长getItemId(int位置){
返回mEvents.get(position.getIdCodigo();
}
公共视图getView(int位置、视图转换视图、视图组父视图){
EventEntryView btv;
if(convertView==null){
btv=neweventryview(mContext,mEvents.get(position));
}否则{
btv=(EventEntryView)convertView;
字符串title1=mEvents.get(position.getDescription();
如果(标题1!=null){
btv.Settext1标题(标题1);
}
}
btv.setBackgroundColor(颜色:黑色);
返回btv;
}
私有上下文;
私有类MyFilter扩展了过滤器{
受保护的筛选器结果执行筛选(字符序列前缀){
//启动我们的结果对象
FilterResults results=新的FilterResults();

//收集有两种可能的解决方法

一,。 使用您自己的过滤算法过滤适配器(如其他人所说)。 2. 第二个更简单的方法是重写您可能定义的自定义RowItem类中的tostring方法

 @Override
        public String toString() {
            return name + "\n" + description;
        }
其中,name和description是存储在要筛选的行项目中的可能文本


并使用adapter.getFilter().filter;因此,您刚才使用的它现在可以工作,因为您的适配器现在返回一个有效的字符串进行筛选

关闭线程的方法很差,而且还标记了正确的答案。这不是“答案”对于你发布的问题。如果你标记一个替代答案会更好。同上,这是迄今为止我在上面看到的最荒谬的帖子之一。我的意思是,有“hi do my work posts”但更糟糕的是,当你看到一个人似乎突然明白了,而不是明白了。这里有一些其他帖子谈论过滤,但没有真正有用的例子,所以我基本上在别处寻找一个答案,帮助我解决我的具体问题。你可以同意不同意,但这并不意味着你有权评判我。你同意吗我不是一个讨厌的人。你说没有真正有用的关于堆栈溢出过滤的工作示例,但是你声称你能够在其他地方找到解决方案。为什么不与社区分享这个工作示例,以便下一个人不必去其他地方看呢?将其标记为一个可接受的答案是误导性的-这不是一个解决问题的答案nyone-你只是宣布你找到了一个解决方案,而没有提供该解决方案。
 @Override
        public String toString() {
            return name + "\n" + description;
        }