gpt4 book ai didi

Android - 向 MutableLiveData 添加新项目并观察

转载 作者:行者123 更新时间:2023-12-02 13:19:26 35 4
gpt4 key购买 nike

如何将新项目添加到 MutableLiveData 列表?我想构建一个无限滚动的 Recyclerview。所以我有一个包含 10 个项目的列表,在单击“加载更多按钮”后,我想添加 10 个新项目。

这是我的产品 list :

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它在我的 Activity 中触发观察方法。但是如果我调用 addAlladd ,观察者方法没有被调用。

最佳答案

实际上,这是您应该更新适配器的方式

  • 将新项目添加到现有列表
  • 通过将相同的列表分配给它的值来通知 LiveData。 Here与解决方案是同一个问题。
  • 当您的 Activity 被通知列表已更改时,它应该通过调用其 notifyDataSetChanged() 通知适配器有关更改。方法。

  • 当您调用 notifyDataSetChanged()适配器的方法,它将以前的项目与新的项目进行比较,找出其中哪些已更改并更新 RecyclerView。您可以调用 notifyItemRangeInserted() 帮助适配器而不是 notifyDataSetChanged() . notifyItemRangeInserted()接受插入项目的范围,在您的情况下,您可以计算它,但取 adapter.itemCount 之间的差异和 productList.size .

    关于Android - 向 MutableLiveData 添加新项目并观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59895548/

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