我有一个列表视图,显示联系人列表。 我在listview上方的布局中添加了EditText,因此我可以使用Filter进行搜索。 我使用EditText上的onTextChanged Listener实现了这个。 我的listview适配器是一个自定义适配器,它扩展了BaseAdapter并实现了Filterable。 我的过滤器可以正常工作。 问题是,当我输入时,数据集会刷新,但listview本身不会刷新,直到我隐藏键盘或按返回键。 如果我在EditText中输入一些文本后尝试点击列表视图但在关闭键盘或按回车之前,我收到此错误:

java.lang.IllegalStateException: The content of the adapter has changed 
but ListView did not receive a notification. Make sure the content of 
your adapter is not modified from a background thread, but only from the UI thread.

现在我肯定不会从UI线程以外的线程修改适配器的内容。

谁能解释一下可能导致这个问题的原因?

实际上,我通过调用Activity.onContentChanged()找到了一种解决方法,但我仍然很好奇为什么我实际上需要手动刷新。

===============>>#1 票数:6 已采纳

我终于找到了办法做到这一点。 问题是,当我调用notifyDataSetChanged();时数据集是刷新的notifyDataSetChanged(); 但是这些观点没有被重新绘制,我不知道为什么(可能与我使用ViewHolder模式有什么关系?只是一个随机的猜测......)。 所以我做的是调用getListView().invalidateViews(); 并使用正确的数据重新绘制视图。

===============>>#2 票数:1

我有一些问题,我尝试了很多没有好结果的解决方案。

我通过在我的活动的清单文件中添加android:hardwareAccelerated="true"解决了这个问题。

尝试使用此解决方案,它可以帮助您

===============>>#3 票数:0

你可以使用setNotifyOnChange()自动调用notifyDataSetChanged()。 它实际上通知附加的观察者基础数据已经改变,反映数据集的任何视图都应该刷新自己。

  ask by Hbibna translate from so

未解决问题?本站智能推荐:

2回复

如何在API栏8的ListView中使用带有过滤器模式的SearchView

我正在开发一个带有minSdkVersion 8的Android并使用ListView在我的应用程序中显示移动联系人,但现在我需要为列表视图添加过滤器,但我找不到任何在sdkVersion 8使用SearchView你们可以帮忙。 这是我的代码 -
2回复

Android Listview具有过滤器问题

我有一个来自数据库的项目的列表视图。 现在,我在列表视图的顶部放置了一个编辑文本。 我想要的是,当用户开始输入编辑文本时,应该过滤列表视图。 例如,如果用户输入字母“ A”,则列表中仅应出现以“ A”开头的名称。 我在代码中使用了自定义适配器。 我问了很多次这个问题,但是还没有找到解决
1回复

返回带有文本过滤器的ListView

我以预期的方式在ListView上启用了文本过滤; 在资源定义中添加android:textFilterEnabled=”true”并(如我使用的是SimpleCursorAdapter)设置一个FilterQueryProvider,它提供了一个经过过滤的游标,如下所示: 我的问题是
1回复

自定义Listview过滤器

我正在进行包含city名称(例如google search的search活动 即:第一行xxxx,xxxx,xxxx值,并在以后的行中相同。 我的问题是,当我在EditText上输入字母时,它同时关注xxxx,xxxx而不是所有的第一个字母值过滤器。 我有第一行-Turkey,布尔
2回复

Android Listview搜索过滤器

我正在尝试对Android进行列表视图搜索。 我发现有很多教程只是在顶部放置了搜索栏,如果您在框中输入,则会过滤结果。 在我的应用程序中,我想在过滤完成后单击给定的项目,我实现了setOnItemClickListener。 问题是,在过滤了要打开的每个类的位置之后,更改了并且打开了不
1回复

用于android的ListView过滤器

我有一个适配器,我使用ad.getFilter().filter(s); 用于过滤listView。 如果我在EditText中写一个单词,它的效果很好。 如果在单词后写一个空格字符,它不起作用(结果没有行)。 我想用名称和surmane做一个过滤器。 我想在edittext中插
1回复

没有自定义过滤器的ListView过滤

我得到了过滤器列表视图的代码,如下所示。 但是它没有考虑中间词。 是否可以通过不包含自定义过滤器的单词进行过滤。
3回复

ListView搜索小部件过滤器

我很难为此找到好的教程。 我有一个ListView,我想为其添加一个“搜索”功能,该功能将根据操作栏中找到的搜索小部件中的用户输入来过滤列表视图。 我浏览了一些教程和几篇文章,但无法将这个概念笼罩在脑海中。 根据该网站,我最近的工作是。 以下是我的自定义适配器代码(请注意,由于我
2回复

如何为Android ListView实现过滤器

我有模型对象数据的数组,并且正在自定义ArrayAdapter中从模型对象数组的listview中显示文本和图像。 它像android联系人视图一样,我想实现搜索功能。 谁能建议我,如何为显示模型对象数据的自定义适配器实现过滤器。 示例示例链接或代码段也可以。
1回复

Android listview过滤器不按搜索按钮问题

我有一个ListView工作正常。 现在,我在ListView的顶部放置了一个EditText。 我想要的是,当a输入字母“ A”时,列表中仅应出现以“ A”开头的名称。 我已尝试执行此操作,但是没有任何反应,请检查我的代码并告诉我我在哪里做错了。 这是我的数据列表代码。 这