Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用notifyDataSetChanged会阻止用户交互(Android开发)_Android - Fatal编程技术网

调用notifyDataSetChanged会阻止用户交互(Android开发)

调用notifyDataSetChanged会阻止用户交互(Android开发),android,Android,我遇到了一个问题,多次调用notifyDataSetChanged()会使与listview的交互冻结一秒钟 基本上,我的应用程序会将一组图像加载到listview中。每次加载后,它都会发布到ui线程。ui线程将图像添加到listarray,然后调用notifyDataSetChanged() 在列表中选择图像时,它将高亮显示。当我对每个图像调用notifyDataSetChanged()时,列表上的三个点击中的每一个都可能实际选择。如果我将notifyDataSetChanged()的音量调低

我遇到了一个问题,多次调用
notifyDataSetChanged()
会使与listview的交互冻结一秒钟

基本上,我的应用程序会将一组图像加载到listview中。每次加载后,它都会发布到ui线程。ui线程将图像添加到listarray,然后调用
notifyDataSetChanged()

在列表中选择图像时,它将高亮显示。当我对每个图像调用
notifyDataSetChanged()
时,列表上的三个点击中的每一个都可能实际选择。如果我将notifyDataSetChanged()的音量调低,点击并让它选择项目的速度会快得多

有人有这方面的线索吗


看起来这6个可见的拇指(没有变化)很快就被扔掉了,又被换了进去,但是用户界面没有显示它们被删除的迹象。在此期间,点击是无效的数据集。

不要在UI线程中调用notifyDataSetChange()。如果它正在进行数据调用并更新ListView,它肯定会阻止用户交互。因此,在异步任务后台线程中执行此操作,而该线程在UI线程上不执行此操作,因此当用户滚动listview时,它将更新它

我使用的代码与此类似。我敢肯定,当我将notifyDataSetChange和图像设置移动到worker时,它崩溃了,也许我只需要尝试移动notifyDataSetChange。我的代码与此示例最为相似:我通过创建一个自定义控件修复了此问题,该控件通过曲面视图绘制所有图像,速度更快,而且我可以节省内存,也不会出现不稳定的选择问题。