2011-10-31 57 views
0

我有一个问题,在一段时间内调用notifyDataSetChanged()会冻结与列表视图的交互。notifyDataSetChanged被调用阻止用户交互(Android开发)

基本上我的应用程序将一堆图像加载到列表视图中。在每个被加载后,它会发布到UI线程。 ui线程将图像添加到listarray中,然后调用notifyDataSetChanged()

当您在列表中选择图像时,它会突出显示。当我每个图像拨打notifyDataSetChanged()时,列表上的三个按键中的每一个都可能实际选择。如果我节流下来notifyDataSetChanged(),我会得到更好的敲击速度并让它选择该项目。

任何人都有提示吗?

看起来6个可见(不变)的拇指很快被抛出并重新交换,但UI没有显示它们被删除的迹象。在此期间,窃听是无效的数据集。

回答

1

不要在UI线程中调用notifyDataSetChange()。它肯定会阻止用户交互,如果它正在进行数据调用并更新ListView。所以在后台线程中做的AsyncTask做的不是在UI线程中做的,所以当用户滚动时它会更新列表视图

+0

我使用的代码与此类似。我很确定它崩溃了,当我将notifyDataSetChange和图像设置到工作人员,也许我只需要尝试只移动notifyDataSetChange。我的代码与此示例最为相似:http://mihaifonoage.blogspot.com/2009/11/displaying-images-from-sd-card-in.html – Mike

+0

我通过创建自定义控件来解决此问题,该控件将所有图像通过表面视图 - 方式更快,我可以节省内存,没有不可思议的选择问题。 – Mike