最近在开发一个简单的安卓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