使用RecyclerView遇到notifyDataSetChanged无效
来源:互联网 发布:jsp和javascript的用途 编辑:程序博客网 时间:2024/06/15 18:08
最近项目里集成了环信的即时通讯,现在有这么一个需求,当收到消息时,动态更新整个消息列表的总的未读消息数。效果图如下:
看看我之前的代码,在消息监听的回调直接调用adapter.setData( getP().loadConversationList()),
再来看下adapter.setData(getP().loadConversationList())方法:
其实就是在里面直接调用了notifyDataSetChanged(),此时有消息来时,界面并没有被刷新,于是我debug跟踪了一下代码的调用逻辑,发现在调用adapter.setData(getP().loadConversationList())里的notifyDataSetChanged()后并没有接着调用onCreateViewHolder()和onBindViewHolder()这两个方法。为什么没有调用者这两个方法,我一时半会不知所措了,于是去网上找资料,发现可能我调用adapter.setData(getP().loadConversationList())方法并不是在主线程调用的,因为之前没有在主线程更新UI,运行时都会报错,这次并没有报错。于是我修改了代码如下:
或者用runOnUIThread()/view.post(rannable)代替Handler也可以。
总结:这个坑很深,要不是在网上看了前辈们的资料,确实很难填满这个坑,如果遇到notifyDataSetChanged()无效,请检查是否在主线程调用的!
- 使用RecyclerView遇到notifyDataSetChanged无效
- RecyclerView遇到notifyDataSetChanged无效时的解决方案
- RecyclerView遇到notifyDataSetChanged无效时的解决方案
- RecyclerView.notifyDataSetChanged无效
- Fragment中,RecyclerView遇到notifyDataSetChanged无效情况说明
- RecyclerView.Adapter notifyDataSetChanged 无效问题
- RecyclerView 中adapter.notifyDataSetChanged()无效的问题
- Recyclerview调用notifyDataSetChanged()方法无效原因
- Android中RecyclerView调用notifyDataSetChanged方法无效
- ViewPager与Fragment结合使用时遇到的坑(notifyDataSetChanged()无效, 懒加载)
- Android RecyclerView调用notifyDataSetChanged方法无效的解决方法
- RecyclerView中Adapter调用notifyDataSetChanged无效时的解决方案
- notifyDataSetChanged无效
- Adapter中使用notifyDataSetChanged 与notifyDataSetInvalidated无效
- fragment更新数据后使用notifyDataSetChanged()无效
- android中adapter使用notifydatasetchanged无效
- 开发遇到的坑:RecyclerView.Adapter notifyDataSetChanged 不起作用
- RecyclerView.Adapter notifyDataSetChanged 不起作用
- Unity_UGUI的事件系统
- 使用CDC的派生类进行绘图
- python中列表list的基本使用
- 3d旋转爱心
- 常用MIME类型
- 使用RecyclerView遇到notifyDataSetChanged无效
- 1,A+B问题
- 如何为CentOS 7配置静态IP地址
- 数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释)
- js 日期时间格式化
- sublime的emmet插件问题
- Unity3D 7.1.0版本游戏体添加Animation动画的开始步骤
- 滑块验证码识别 java版本
- CS50 2016-Week 2 学习笔记