你的位置:首页 > 软件开发 > 操作系统 > ListView实现Item局部刷新

ListView实现Item局部刷新

发布时间:2015-10-20 23:00:04
对于ListView数据的刷新大家都知道,改变Adapter的数据源,然后调用Adapter的notifyDateSetChanged()方法即可。  但是博主在做公司项目的时候,有个下载模块,因为可能同时下载好几个数据,所以用的listview展示所有正在下载的内容。因为下载进 ...

   对于ListView数据的刷新大家都知道,改变Adapter的数据源,然后调用Adapter的notifyDateSetChanged()方法即可。

  但是博主在做公司项目的时候,有个下载模块,因为可能同时下载好几个数据,所以用的listview展示所有正在下载的内容。因为下载进度要实时更新,所以要不停的调用notifyDateSetChanged刷新数据。这样会不停的重新绘制整个listview的界面,性能开销非常大。而且如果每个item有图片的话,每个item的图片都需要重新加载,就算图片做了内存缓存,刷新一下图片也会闪一下,不停的刷新就会导致各个item的图片不停的闪,体验一点都不好。

  那么对于上面问题,有没有解决办法呢?当然是有的。我们可以针对某一个item进行局部更新,而不影响其它没有修改的item。那么具体如何实现的呢?我们看下面的代码。

 1   private void updateView(int itemIndex) { 2     //得到第一个可显示控件的位置, 3     int visiblePosition = mListView.getFirstVisiblePosition(); 4     //只有当要更新的view在可见的位置时才更新,不可见时,跳过不更新 5     if (itemIndex - visiblePosition >= 0) { 6       //得到要更新的item的view 7       View view = mListView.getChildAt(itemIndex - visiblePosition); 8       //调用adapter更新界面 9       mAdapter.updateView(view, itemIndex);10     }11   }

原标题:ListView实现Item局部刷新

关键词:ie

ie
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。