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


    转自: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
     
    1. publicclassextends privatenull private private   
    2. protectedvoid super new new   
    3. publicvoidintlong   
    4. , item.getData() +    
    5.   
    6.      * 初始化数据 
    7.      */ privatevoid new forint; i < ; i++)  
    8. new      * 自定义item数据类型 
    9.      */ class          * 数据id 
    10.          */ privateint          * 数据 
    11.          */ private publicint return publicvoidint this public return publicvoid this }  

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

     

     

    [java] view plaincopy
     
    1. publicclassextends      * listview中的数据集 
    2.      */ private private private public this this      * 设置listview对象 
    3.      *  
    4.      * @param lisv 
    5.      */ publicvoid this      * update listview 单条数据 
    6.      *  
    7.      * @param item 新数据对象 
    8.      */ publicvoid int;  
    9.   
    10. forint; i < mDataList.size(); i++)  
    11. if   
    12.   
    13. ()  
    14. privatenew publicvoid      * 刷新指定item 
    15.      *  
    16.      * @param index item在listview中的位置 
    17.      */ privatevoidint ifnull return   
    18. int   
    19.   
    20.   
    21.   
    22.   
    23.   
    24.   
    25. publicint   
    26. return   
    27. publicint   
    28. return   
    29. publiclongint   
    30. return   
    31. publicint   
    32. ifnull null return }  
  • 相关阅读:
    编译不通过:提示XXXX不是类或命名空间名 的解决办法
    nginx应用总结(2)--突破高并发的性能优化
    nginx应用总结(1)--基础认识和应用配置
    springboot内置tomcat验证授权回调页面域名
    MySQL实现类似Oracle中的nextval和currval
    Notepad++中删除连续的任意n行
    Spring Boot系列二 Spring @Async异步线程池用法总结
    Spring线程池配置
    Spring异步方法注解 @Async
    异步任务spring @Async注解源码解析
  • 原文地址:https://www.cnblogs.com/1995hxt/p/4831002.html
Copyright © 2020-2023  润新知