【发布时间】:2020-01-24 11:28:57
【问题描述】:
如何将新项目添加到 MutableLiveData 列表?我想构建一个无限滚动的 Recyclerview。所以我有一个包含 10 个项目的列表,在单击“加载更多按钮”后,我想添加 10 个新项目。
这是我的产品清单:
private companion object {
private var _products = MutableLiveData<MutableList<Product>>()
}
val products: LiveData<MutableList<Product>> = _products
Ant 这是我的加载函数:
fun loadProducts(category: Category) { // category: String
_isViewLoading.postValue(true)
AppService.fetchProducts(category, neuheitenCounter) { success, response ->
_isViewLoading.postValue(false)
if(success) {
when(category) {
Category.NEWS -> {
if(_products.value == null) {
_products.value = response?.products //as List<Product>
} else {
response?.let {
_products.value?.addAll(response?.products)
}
}
neuheitenCounter++
}
}
}
}
}
如果我调用_products.value = response?.products,它会在我的活动中触发观察方法。但如果我调用addAll 或add,则不会调用观察者方法。
【问题讨论】:
-
我认为这是不正确的。他们说 addAll 并将列表设置为新列表。我只想添加新项目而不添加完整列表/覆盖现有列表,因为我通过适配器进行更改,如果我添加完整的新列表,它将被删除。
-
这是更新 RecycleView 的常用方法。我添加了一个更详细的答案,希望对您有所帮助。
标签: android kotlin android-livedata