RecyclerView.notifyItemRemoved导致的数组下标越界问题

简介: 我们一般在RecyclerView列表中移除某条Item时会调用 notifyItemRemoved 方法,其还附带了相应的移除特效。

我们一般在RecyclerView列表中移除某条Item时会调用 notifyItemRemoved 方法,其还附带了相应的移除特效。使用虽然简单,却埋了一个大坑;


当你调用 notifyItemRemoved 之后,如果你移除的刚好是倒数第二个数据,此时点击最后一条数据,就会惊讶的发现当前点击的下标居然没变,然后抛出数组越界的错误。为什么呢,原因如下:


众所周知,RecyclerView更新数据采用了观察者模式,当我们调用 notifyItemRemoved 之后,就会通知已注册的观察者此条数据已被移除,但是对于当前的列表的实际位置,并不会发生改变。所以此时我们点击别的位置,对应的position位置依然时移除前的位置,如果你正恰好移除的是倒数第二条数据,此时点击的是最后一条数据的位置,就会出现下标越界。

说了这么多,解决办法呢?

(

])

notifyItemRangeChanged 方法是干啥的呢?

从方法名就可知道,刷新指定范围的item.那为什么要刷新从当前位置刷新到当前列表最后一个item呢,也不难理解,因为移除位置前的下标没变啊,受到影响的只是当前下标至最后一个item-1;

目录
打赏
0
0
0
0
11
分享
相关文章
flutter中实现仿Android端的onResume和onPause方法
flutter中实现仿Android端的onResume和onPause方法
💡Android开发者必看!掌握这5大框架,轻松打造爆款应用不是梦!🏆
【7月更文挑战第28天】在Android开发领域,五大框架如星辰般指引方向,加速进程,提升应用品质。1. **Retrofit**:Square公司的类型安全HTTP客户端,使网络请求变得优雅简洁。2. **Room**:Google推荐的ORM库,简化SQLite数据库访问。3. **MVVM**:一种架构模式,提高代码可维护性和扩展性。4. **Dagger 2**:依赖注入框架,减少样板代码,以声明方式管理依赖。5. **Jetpack Compose**:全新的UI工具包,采用声明式UI编程,让UI开发更直观高效。掌握这些框架,能有效应对Android开发挑战,助力打造爆款应用。
387 0
Android面试高频知识点(1) 图解 Android 事件分发机制
在Android开发中,事件分发机制是一块Android比较重要的知识体系,了解并熟悉整套的分发机制有助于更好的分析各种点击滑动失效问题,更好去扩展控件的事件功能和开发自定义控件,同时事件分发机制也是Android面试必问考点之一,如果你能把下面的一些事件分发图当场画出来肯定加分不少。废话不多说,总结一句:事件分发机制很重要。
329 9
chatGPT提示邮箱不支持的解决办法汇总!
一些用户在创建过程中遇到了提示“Oops! The email you provided is not supported”。中文的意思是“糟糕,邮箱不支持”。该如何解决呢?
2768 0
移动端 Hybrid 开发:RN、Flutter与Webview的抉择与融合
【4月更文挑战第6天】本文对比了移动端Hybrid开发的三种主流方案——React Native (RN),Flutter和Webview。RN基于JavaScript,适合React熟练的团队,适用于性能要求高、跨平台的中大型应用。Flutter,使用Dart语言,以其高性能和自定义UI适用于追求极致体验的项目。Webview适合快速移植Web应用至移动端,开发成本低但性能受限。选择时要考虑项目规模、性能需求、团队技术栈等因素,实际应用中常采用混合策略,如RN/Flutter+Webview、原生模块集成等,以实现最佳开发效果和长期技术规划。
842 0
程序员如何准备好一次高质量的汇报?
为什么掌握汇报能力很重要? 可能很多同学会说“我这种基层打工人不需要做年终述职了,跟周报一样写个书面总结就行了,至少现阶段跟我无关。” 当然,不少企业为了节省时间,对基层员工或基层管理者来说是不需要做述职汇报或者年终汇报的,仅提交书面形式的年终总结即可。 但实际情况是,无论是晋升述职、提案汇报,还是与客户售前交流、项目实施讲解,处处场景都要用到汇报技能,汇报是每一位职场人在成长的过程中都应该掌握的技能。 所以建议大家在日常工作中尽量珍惜每一次上台的机会,并从中积累汇报经验。
489 1
程序员如何准备好一次高质量的汇报?
Flutter笔记:关于Flutter中的大文件上传(上)
Flutter笔记:关于Flutter中的大文件上传(上)
590 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问