调用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。我的代码与此示例最为相似:我通过创建一个自定义控件修复了此问题,该控件通过曲面视图绘制所有图像,速度更快,而且我可以节省内存,也不会出现不稳定的选择问题。