首页 > 其他分享 >RecyclerView notifyItemRemoved导致位置错乱的问题

RecyclerView notifyItemRemoved导致位置错乱的问题

时间:2024-10-10 11:44:42浏览次数:7  
标签:mData notifyItemRemoved 删除 位置 刷新 错乱 position RecyclerView

RecyclerView的刷新分为内容变化和结构变化,结构变化比如remove和insert等并不会导致viewholder的更新,所以有时候我们使用

notifyItemRemoved(position);

或者使用

notifyItemInserted(position);

item的位置并没有发生改变,或者位置发生错乱,很是奇怪诡异,需要重新调用

notifyDataSetChanged();

才能刷新整个List每个Item的位置,但这样做会使得RecyclerView增加和删除的动画效果没有了。那么要既想没有Bug的插入删除,又想有动画怎么搞呢,只需要刷新删除位置以下的List的Item位置即可,那么幸亏RecyclerView有一个局部刷新的方法:

notifyItemRangeChanged(int positionStart, int itemCount)

怎么使用呢? 
我们只需要在删除或插入时同时,刷新改变位置item下方的所有Item的位置: 
删除动作:

fun removeItem(){
    mData.removeAt(position)
    notifyItemRemove(position);
    if (position != mData.size()) {
         otifyItemRangeChanged(position, mData.size() - position);
    }

}

 

标签:mData,notifyItemRemoved,删除,位置,刷新,错乱,position,RecyclerView
From: https://www.cnblogs.com/zuiniub/p/18456007

相关文章

  • PbootCMS模板安装后首页打开样式错乱的解决方法
    在使用PBootCMS模板安装后,如果发现首页打开时样式错乱,通常是因为样式表(CSS文件)没有正确加载。以下是一些常见的解决方法:解决方法检查域名设置确保在后台正确设置了站点的域名。这一步非常重要,因为很多静态资源的路径依赖于域名。步骤:登录PBootCMS后台。进入“站点信......
  • 解决 PBootCMS 模板安装后首页样式错乱的问题
    <!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><title>示例页面</title><!--确保base标签设置正确--><basehref="http://www.example.com/"><!--引......
  • Pbootcms源码上传安装后前端显示错乱乱码问题解决方案
    PbootCMS前端显示错乱或乱码问题可能是由多种原因造成的,下面是一些可能的解决方案:检查字符集设置:确认前端页面的字符集设置是否正确。通常在HTML头部会有一个<meta>标签定义字符集,例如<metacharset="UTF-8">。同时检查PbootCMS后台的字符集设置是否与前端一致,确保数据库和......
  • Pbootcms源码上传安装后前端显示错乱乱码怎么办
    当PbootCMS源码上传安装后,如果前端显示错乱或出现乱码,这通常是由几个常见的原因造成的。以下是针对这种情况的一些解决方案:检查字符编码设置:确认HTML文档头部的字符编码设置是否正确。确保在HTML文档中包含正确的<meta>标签,例如<metacharset="UTF-8">。检查PbootCMS后台的......
  • 网站后台样式错乱,文章详情页打不开
    根据您提供的信息,网站后台样式错乱、文章详情页打不开,以及前台页面无法访问的问题,可能是由于服务器防火墙拦截了某些URL导致的。具体原因如下:可能的原因中毒导致:确认网站是否被植入恶意代码或病毒。升级到最新版本,并进行查毒处理。服务器防火墙拦截:宝塔面板或其他防......
  • Android实战经验之如何使用DiffUtil提升RecyclerView的刷新性能
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点DiffUtil是一个用于计算两个列表之间差异的实用程序类,它可以帮助RecyclerView以更高效的方式更新数据。使用DiffUtil可以减少不必要的全局刷新,从而提高性能,特别是在处理......
  • Android RecyclerView 缓存机制深度解析与面试题
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点引言RecyclerView是Android开发中用于展示列表和网格的强大组件。它通过高效的缓存机制,优化了滑动性能和内存使用。本文将深入探讨RecyclerView的缓存机制,并......
  • Android实战经验之如何使用DiffUtil提升RecyclerView的刷新性能
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点DiffUtil是一个用于计算两个列表之间差异的实用程序类,它可以帮助RecyclerView以更高效的方式更新数据。使用DiffUtil可以减少不必要的全局刷新,从而提高性能,特......
  • 使用 RecyclerView 时,有哪些常见的性能优化技巧可以分享?
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点使用RecyclerView时,性能优化是确保流畅用户体验的关键。以下是一些常见的性能优化技巧:1、减少布局复杂性:尽量简化列表项的布局,减少视图嵌套层次,可以使用Const......
  • 如何通过调整RecyclerView的缓存来优化滚动性能
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点在RecyclerView中,setMaxRecycledViews方法用于设置RecycledViewPool的缓存大小,这是一个重要的性能优化手段。RecycledViewPool允许多个RecyclerView实例共......