gpt4 book ai didi

android - 刷新项目列表的 MutableLiveData

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:02:22 31 4
gpt4 key购买 nike

我在应用的架构组件中使用 LiveData 和 ViewModel。

我有一个分页的项目列表,当用户向下滚动时我加载更多。查询的结果存储在一个

MutableLiveData<List<SearchResult>>

当我执行初始加载并将变量设置为新列表时,它会在绑定(bind)适配器上触发回调,将数据加载到 recyclerview 中。

但是,当我加载第二页并将其他项目添加到列表时,不会触发回调。但是,如果我用包含新旧项目的新列表替换该列表,则会触发回调。

是否可以让 LiveData 在更新支持列表时通知其观察者,而不仅仅是在更新 LiveData 对象时?

这不起作用(忽略空检查):

val results = MutableLiveData<MutableList<SearchResult>>()

/* later */

results.value.addAll(newResults)

这个有效:

val results = MutableLiveData<MutableList<SearchResult>>()

/* later */

val list = mutableListOf<SearchResult>()
list.addAll(results.value)
list.addAll(newResults)
results.value = list

最佳答案

我觉得这个扩展更好一些。

operator fun <T> MutableLiveData<ArrayList<T>>.plusAssign(values: List<T>) {
val value = this.value ?: arrayListOf()
value.addAll(values)
this.value = value
}

用法:

list += anotherList;

关于android - 刷新项目列表的 MutableLiveData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49246237/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com