Android对ListView 进行局部刷新的方法教程
程序员文章站
2022-10-16 16:18:34
今天,简单讲讲android如何对listview 进行局部刷新。
之前,自己做的listview 发现刷新频率太高了,而且很多界面上看不到的数据改变时调用adapter.notifydataset...
今天,简单讲讲android如何对listview 进行局部刷新。
之前,自己做的listview 发现刷新频率太高了,而且很多界面上看不到的数据改变时调用adapter.notifydatasetchanged()也会导致整个listview 进行刷新。其实我们只需在界面元素改变时刷新界面那个改变的item就可以。如果不停刷新这个界面,会导致效率减低。所以在网上搜索了资料,最终解决了问题。
平时在写listview的时候需要更改某些数据,这种情况我们一般会调用
notifydatasetchanged()方法进行刷新,调用notifydatasetchange其实会导致adpter的getview方法被多次调用(画面上能显示多少就会被调用多少次),并且在有获取网络图片的情况下会可能造成大量闪动或卡顿,极大的影响用户体验(图片重新加载并闪动在imageloader框架中会出现,在glide框架中没有出现)。
所以我们需要做单行刷新来进行优化
这个是google官方给出的解决方案:
private void updatesinglerow(listview listview, long id) { if (listview != null) { int start = listview.getfirstvisibleposition(); for (int i = start, j = listview.getlastvisibleposition(); i <= j; i++) if (id == ((messages) listview.getitematposition(i)).getid()) { view view = listview.getchildat(i - start); getview(i, view, listview); break; } } }
简单讲讲,其实就是通过改变数据的位置找到对应的listview 界面元素的位置,直接调用adpter.getview(i, view, listview); 进行局部刷新。上面的代码也可以简写为:
/** * 局部更新数据,调用一次getview()方法;google推荐的做法 * * @param listview 要更新的listview * @param position 要更新的位置 */ public void notifydatasetchanged(listview listview, int position) { /**第一个可见的位置**/ int firstvisibleposition = listview.getfirstvisibleposition(); /**最后一个可见的位置**/ int lastvisibleposition = listview.getlastvisibleposition(); /**在看见范围内才更新,不可见的滑动后自动会调用getview方法更新**/ if (position >= firstvisibleposition && position <= lastvisibleposition) { /**获取指定位置view对象**/ view view = listview.getchildat(position - firstvisibleposition); adpter.getview(position, view, listview); } }
这个也是一样,先判断刷新元素是否在listview 的可见位置,如果在就直接调用adpter.getview(position, view, listview);进行刷新。
android listview 局部刷新就讲完了。
就这么简单。
下一篇: 女汉纸打架真特么猛
推荐阅读
-
android中ListView数据刷新时的同步方法
-
win10系统总是弹出你要允许以下程序对计算机进行更改的原因及解决方法图文教程
-
Android对ListView 进行局部刷新的方法教程
-
python3 实现对图片进行局部切割的方法
-
利用JS对iframe父子(内外)页面进行操作的方法教程
-
android基础教程之android的listview与edittext冲突解决方法
-
php根据某字段对多维数组进行排序的方法_PHP教程
-
php根据某字段对多维数组进行排序的方法,php字段多维数组_PHP教程
-
php实现对两个数组进行减法操作的方法,数组减法_PHP教程
-
android中ListView数据刷新时的同步方法