一般列表刷新,会使用notifyDataChanged,会使列表整个刷新,虽然达到了效果,但是不美观。所以,如果可以做到只刷新需要刷新的item就好了。这里就有个特好用的方法,分享给大家。

 /*** 更新某一个item数据* @param nearbyNewAnchorInfo*/public void updateNearbyAndNewAnchorData(RecyclerView recyclerView, NearByNewAnchorInfo nearbyNewAnchorInfo){int headerCount = ((HeaderAndFooterWrapper) (recyclerView.getAdapter())).getHeadersCount();//极致的item刷新优化RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(nearbyNewAnchorInfo.Index+headerCount);if (viewHolder != null && viewHolder instanceof NearbyNewViewHolder) {NearbyNewViewHolder itemHolder = (NearbyNewViewHolder) viewHolder;itemHolder.nearbyView.updateData(nearbyNewAnchorInfo.StarLiveRooms,true);itemHolder.newView.updateData(nearbyNewAnchorInfo.NearLiveRooms,true);}}

主要使用到的方法: public ViewHolder findViewHolderForAdapterPosition(int position)

/**
* Return the ViewHolder for the item in the given position of the data set. Unlike
* {@link #findViewHolderForLayoutPosition(int)} this method takes into account any pending
* adapter changes that may not be reflected to the layout yet. On the other hand, if
* {@link Adapter#notifyDataSetChanged()} has been called but the new layout has not been
* calculated yet, this method will return null since the new positions of views
* are unknown until the layout is calculated.
*

* This method checks only the children of RecyclerView. If the item at the given
* position is not laid out, it will not create a new one.
*

* When the ItemAnimator is running a change animation, there might be 2 ViewHolders
* representing the same Item. In this case, the updated ViewHolder will be returned.
*
* @param position The position of the item in the data set of the adapter
* @return The ViewHolder at position or null if there is no such item
*/

需要注意的是,这里的position指的是item在列表中的位置,而不是item数据在列表数据的位置。所以需要将列表中的头部视图计算进去,才可以获取到真正该位置上的item。

Recyclerview 特别好用的局部刷新item方法相关推荐

  1. vue实现页面刷新以及局部刷新的方法

    1.利用Vue里面的provide+inject组合,实现全页面刷新 通过在APP页面进行demo进行刷新,不会像前两种那样出现短暂的闪烁效果,提升用户体验,通常可以使用这种方式 (1)在APP页面中 ...

  2. Android ListView局部刷新item

    当前ListView页面跳转到其他页面返回后,重新获取数据后刷新局部item 1.首先需要获取到跳转之前item的位置,给ListView设置setOnScrollViewListener()接口,在 ...

  3. RecyclerView 配合 DiffUtil,RecyclerView局部刷新

    一个问题: 每次从服务器取到数据后,都是调用adapter.notifyDataSetChanged();进行刷新.那局部刷新(adapter.notifyItemChanged();)的这些东西不是 ...

  4. RecyclerView局部刷新和原理介绍

    RecyclerView局部刷新和原理介绍 一.引言 二.局部刷新的正确使用姿势 三.局部刷新的原理 3.0 前提 3.1 RecyclerView与Adapter建立观察者模式 3.2 onItem ...

  5. android 自定义view局部刷新,Android 优化之局部刷新

    RecyclerView 局部刷新 相信现在已经很少人不用 RecyclerView 了,如果只有一个 item 的数据源改变的时候,大家都会用 notifyItemChanged(int posit ...

  6. 小程序 朋友圈,点赞 ,评论,发布动态,功能,局部刷新数据之 -----评论

    小程序 朋友圈功能之 ----->评论 后台返回的数据 {code:0, data:{{"id": "174", // 动态的id"conten ...

  7. Adapter局部刷新

    ListView中数据刷新,比如某一项有3个按钮,按一下则切换数据源,这样就要刷新,如果调用notifyDataSetChanged()则会将页面展示的几个Item都进行刷新.现在这种方法则是局部刷新 ...

  8. AJAX:实现局部刷新

    开始时间:2021-09-04 AJAX 全局刷新和局部刷新 全局刷新:整个浏览器被新的数据覆盖.在网络中传输大量的数据.浏览器需要加载,渲染页面. 部分刷新:在浏览器器的内部,发起请求,获取数据,改 ...

  9. 关于Ajax局部刷新

    有关Ajax 目录 一.什么是Ajax? 二.Ajax的核心对象XMLHttpRequest 1.使用步骤 (1)创建异步对象 (2)绑定事件 (3)初始化请求 (4)发送请求 2.属性 一.什么是A ...

  10. jsp java局部刷新_jsp怎么实现局部刷新

    jsp实现局部刷新的方法:首先创建一个处理ajax请求的jsp文件:然后设置输出信息的格式及字符集:最后利用JSP和ajax来实现局部页面刷新即可. 通过 AJAX,JavaScript 可使用 Ja ...

最新文章

  1. 2019ICPC(南昌) - Magic Master(模拟)
  2. 编写python程序_如何进行Python程序的编写
  3. Codeforces Round #614 (Div. 2) D. Aroma‘s Search 暴力 + 思维
  4. Tomcat9.0 设置局域网内其他电脑或手机端访问{9.0更新}
  5. python to_excel新增sheet_Python使用xlrd和xlwt读写Excel的简单用法
  6. 2008 DHCP中继器代理服务
  7. ROS 机器人操作系统:概述
  8. vscode格式化代码设置
  9. 系统框图之phy框图100M网络
  10. pdf转换html器 免费版,pdf转换成html转换器
  11. CVTE(视源股份)前端实习生面经
  12. 17-面向对象之语法(2)
  13. Linux 入门基本操作
  14. 安卓手机与Linux同步后,搜索文件内的内容
  15. Image Translation for Medical Image Generation Ischemic Stroke Lesion Segmentation——论文翻译
  16. (附源码)计算机毕业设计SSM流浪动物管理系统
  17. c语言之简单版的图书检索系统
  18. 引导滤波GuidedFilter
  19. IntelliJ IDEA 2021.2(Community Edition)安装阿里编码规约插件,亲测有效
  20. 云开发星座测评运势小程序源码【源码好优多】

热门文章

  1. Android 请求Root权限代码
  2. macOS 安装 aircrack-ng 破解 wifi,hashcat ,OnlineHashCrack,在线破解握手包
  3. android 局域网聊天工具(可发送文字/语音)
  4. Layer Norm
  5. php中html插入图片,html插入图片的示例代码详解(图)
  6. 开放的在线客服系统Live Zilla
  7. 小葵花妈妈课堂开课了:《Runnable、Callable、Future、RunnableFuture、FutureTask 源码分析》...
  8. Maya界面编程入门:在Maya中使用Qt
  9. 火狐firefox插件plugin:
  10. 重磅丨美国公布长达35页的《2016-2045年新兴科技趋势报告》