Recyclerview 特别好用的局部刷新item方法
一般列表刷新,会使用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 returnnull
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 atposition
or null if there is no such item
*/
需要注意的是,这里的position指的是item在列表中的位置,而不是item数据在列表数据的位置。所以需要将列表中的头部视图计算进去,才可以获取到真正该位置上的item。
Recyclerview 特别好用的局部刷新item方法相关推荐
- vue实现页面刷新以及局部刷新的方法
1.利用Vue里面的provide+inject组合,实现全页面刷新 通过在APP页面进行demo进行刷新,不会像前两种那样出现短暂的闪烁效果,提升用户体验,通常可以使用这种方式 (1)在APP页面中 ...
- Android ListView局部刷新item
当前ListView页面跳转到其他页面返回后,重新获取数据后刷新局部item 1.首先需要获取到跳转之前item的位置,给ListView设置setOnScrollViewListener()接口,在 ...
- RecyclerView 配合 DiffUtil,RecyclerView局部刷新
一个问题: 每次从服务器取到数据后,都是调用adapter.notifyDataSetChanged();进行刷新.那局部刷新(adapter.notifyItemChanged();)的这些东西不是 ...
- RecyclerView局部刷新和原理介绍
RecyclerView局部刷新和原理介绍 一.引言 二.局部刷新的正确使用姿势 三.局部刷新的原理 3.0 前提 3.1 RecyclerView与Adapter建立观察者模式 3.2 onItem ...
- android 自定义view局部刷新,Android 优化之局部刷新
RecyclerView 局部刷新 相信现在已经很少人不用 RecyclerView 了,如果只有一个 item 的数据源改变的时候,大家都会用 notifyItemChanged(int posit ...
- 小程序 朋友圈,点赞 ,评论,发布动态,功能,局部刷新数据之 -----评论
小程序 朋友圈功能之 ----->评论 后台返回的数据 {code:0, data:{{"id": "174", // 动态的id"conten ...
- Adapter局部刷新
ListView中数据刷新,比如某一项有3个按钮,按一下则切换数据源,这样就要刷新,如果调用notifyDataSetChanged()则会将页面展示的几个Item都进行刷新.现在这种方法则是局部刷新 ...
- AJAX:实现局部刷新
开始时间:2021-09-04 AJAX 全局刷新和局部刷新 全局刷新:整个浏览器被新的数据覆盖.在网络中传输大量的数据.浏览器需要加载,渲染页面. 部分刷新:在浏览器器的内部,发起请求,获取数据,改 ...
- 关于Ajax局部刷新
有关Ajax 目录 一.什么是Ajax? 二.Ajax的核心对象XMLHttpRequest 1.使用步骤 (1)创建异步对象 (2)绑定事件 (3)初始化请求 (4)发送请求 2.属性 一.什么是A ...
- jsp java局部刷新_jsp怎么实现局部刷新
jsp实现局部刷新的方法:首先创建一个处理ajax请求的jsp文件:然后设置输出信息的格式及字符集:最后利用JSP和ajax来实现局部页面刷新即可. 通过 AJAX,JavaScript 可使用 Ja ...
最新文章
- 2019ICPC(南昌) - Magic Master(模拟)
- 编写python程序_如何进行Python程序的编写
- Codeforces Round #614 (Div. 2) D. Aroma‘s Search 暴力 + 思维
- Tomcat9.0 设置局域网内其他电脑或手机端访问{9.0更新}
- python to_excel新增sheet_Python使用xlrd和xlwt读写Excel的简单用法
- 2008 DHCP中继器代理服务
- ROS 机器人操作系统:概述
- vscode格式化代码设置
- 系统框图之phy框图100M网络
- pdf转换html器 免费版,pdf转换成html转换器
- CVTE(视源股份)前端实习生面经
- 17-面向对象之语法(2)
- Linux 入门基本操作
- 安卓手机与Linux同步后,搜索文件内的内容
- Image Translation for Medical Image Generation Ischemic Stroke Lesion Segmentation——论文翻译
- (附源码)计算机毕业设计SSM流浪动物管理系统
- c语言之简单版的图书检索系统
- 引导滤波GuidedFilter
- IntelliJ IDEA 2021.2(Community Edition)安装阿里编码规约插件,亲测有效
- 云开发星座测评运势小程序源码【源码好优多】
热门文章
- Android 请求Root权限代码
- macOS 安装 aircrack-ng 破解 wifi,hashcat ,OnlineHashCrack,在线破解握手包
- android 局域网聊天工具(可发送文字/语音)
- Layer Norm
- php中html插入图片,html插入图片的示例代码详解(图)
- 开放的在线客服系统Live Zilla
- 小葵花妈妈课堂开课了:《Runnable、Callable、Future、RunnableFuture、FutureTask 源码分析》...
- Maya界面编程入门:在Maya中使用Qt
- 火狐firefox插件plugin:
- 重磅丨美国公布长达35页的《2016-2045年新兴科技趋势报告》