Android RecycleView.Adapter/ListAdapter使用submitList的一些问题 【日积月累计划】

最近在开发一个简单的安卓app。有很长一段时间没用安卓了,引入jetpack之后开发变化很大。在参考了google自己出的RecycleView教程之后,满以为可以使用RecycleView不会出现什么问题了。

想不到该来的还是来了。话说一番操作之后做了一个扫描连接设备的界面,但是发生了一下奇怪的事情。

按下刷新按钮,RecycleView不出现任何新的item。但是如果我按一下editText的框,然后就出现了。为了便于理解问题的根源,我想简单交代一下目前更新RecycleView的方法。

1、用一个刷新按键,去获得设备节点的连接情况。扫描上来一个就生成这个设备的操作图标。

2、为了减少建立list的损耗。我用一个MutableList去获得节点信息。点刷新按钮的时候清空list。然后获得一个就增加一个。

3、用一个绑定list数量的私有的MutableLiveData,一个共有的LiveData通过get和MutableLiveData绑定。因此如果刷新到新的节点就改变MutableLiveData的节点数目。

4、用一个observer去观察LiveData的数据(节点数目的变化)。为了方便调试,每次数据改变,同时显示一个Toast。然后用submitList去通知ListAdapter去更新Adapter。

5、用一个ListAdapter去绑定了RecycleView。用DiffUtil来更新数据。

~~~~~~~~~~~~~~~~~~~~~~

结果就出现了上面的情况。

官方有类似的demo,但大多数都绑定room里面的数据。在一番操作之后无果,只好求助stackoverflow。有这样一篇帖子:https://stackoverflow.com/questions/49726385/listadapter-not-updatin

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值