您的位置:首页 > 移动开发 > Android开发

转 android Listview,gridview局部刷新,部分刷新 (仿QQ动态评论局部刷新)

2015-09-23 00:22 585 查看
转自:http://blog.csdn.net/jdsjlzx/article/details/45582719

众所周知Listview和Gridview的刷新界面的方式是调用adapter.notifyDataSetChanged()进行界面刷新。

但是此方法有其弊端,他是将界面中的数据全部刷新一遍,不论数据有没有变化。如果listview加载了很多的数据(如:100条)

在进行刷新时就会造成很大的系统开销如何像qq空间个人动态那样点赞只刷新一条呢:

主要原理:

对listview的某一个item进行刷新

1.要获取要刷新的item当前索引position和数据

2.对获取的数据进行重置

3.将重置的数据放到adapter中的数据集的原来的位置(根据position刷新原数据集的某一条数据)

4.在listview中获取需要刷新的子item的view

5.从更新过的数据集中获取新数据,更新viwe中的数据(handler中操作,实现界面的刷新)

功能如下,代码中有详细注释:

[java] view plaincopy

publicclassextends privatenull private private

protectedvoid super new new

publicvoidintlong

, item.getData() +

* 初始化数据

*/ privatevoid new forint; i < ; i++)

new * 自定义item数据类型

*/ class * 数据id

*/ privateint * 数据

*/ private publicint return publicvoidint this public return publicvoid this }

activity进行调用,功能操作主要封装在adapter中如下:

[java] view plaincopy

publicclassextends * listview中的数据集

*/ private private private public this this * 设置listview对象

*

* @param lisv

*/ publicvoid this * update listview 单条数据

*

* @param item 新数据对象

*/ publicvoid int;

forint; i < mDataList.size(); i++)

if

()

privatenew publicvoid * 刷新指定item

*

* @param index item在listview中的位置

*/ privatevoidint ifnull return

int

publicint

return

publicint

return

publiclongint

return

publicint

ifnull null return }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: