【发布时间】:2021-09-03 06:56:09
【问题描述】:
我在这里创建了一个库:https://github.com/chanjungkim/ALiveData
这个库是因为MutableLiveData<ArrayList<T>>而制作的。许多了解 LiveData 的人在需要操作(添加、删除等)MutableLiveData 时抱怨或对这种类型感到困惑。那是因为 ArrayList 易于操作,_arrayList.value!!.add(item) 或 _arrayList.value!!.remove(0) 似乎可以通知。但他们没有。
最后,当我们要通知时,我们必须分配一个像_arrayList.value!! = mList 这样的值。 ArrayList和List都需要设置_arrayList.value!! = mArrayList或者_arrayList.value!! = mList这样的数据。
我的问题是 List 没有 add()、remove() 等。另一方面,ArrayList 已经有了这些功能,可以帮助我们更轻松地操作列表。
有人这样建议
_list.value = list.value.toMutableList().doWhatever().toList()
那么,使用 List 而不是 ArrayList 有什么意义呢?能否举例说明使用方法?
【问题讨论】:
-
如果您希望它始终是可变的,为什么不简单地使用
MutableLiveData<MutableList<T>>?关键在于意图,并且与实施无关。如果您有List<T>,您可以使用AwesomeList。当您拥有ArrayList时,您只能使用 ArrayList。 -
最后,您应该有一个“隐藏的”MutableLiveData 和一个“公开的”LiveData,其中包含返回可变版本的自定义 getter。所以你不能从消费者方面把东西放在那里。因此,暴露的
LiveData<List<T>>可以与隐藏的MutableLiveData<MutableList<T>>一起使用。
标签: android list arraylist android-livedata mutablelivedata