标签: android-pagedlistview

如何更新 PagedListAdapter 中的单个项目

我已经使用 ItemKeyedDataSource 实现了新的 PagedListAdapter。我的列表包含带有“赞”按钮的提要项目。单击“赞”按钮应刷新该项目。

要在单击 Like 按钮时刷新我的列表项,我会更新 Firestore 后端中的状态,并在 ItemKeyedDataSource 上调用 invalidate。但这将刷新我的整个列表,同时跳回列表顶部。

我不确定这是否是正常行为,所以我去调试并检查我的 DiffUtil.ItemCallback 是否是问题所在。但这两个方法(areItemsTheSame 和 areContentsTheSame)永远不会被调用。

那么,在 DataSource 上调用 invalidate 是触发单个项目更新的方法吗?DiffUtil 会帮助我在更新后跟踪我在列表中的位置,还是我看错了方向?

android android-recyclerview android-jetpack android-pagedlistview

6
推荐指数
2
解决办法
4707
查看次数

错误:“类型不匹配。必需:Observer<PagedList<MyItem!>!>”。怎么修?

我正在使用PagedListAdapterpagedListLiveData不使用Room 来显示大量项目。
在下面的代码中,我试图将适配器提交给 PagedList。

val pagedListLiveData = LivePagedListBuilder(sourceFactory, pagedListConfig)
       .setFetchExecutor(Executors.newSingleThreadExecutor())
       .build()

val adapter = MyPagedAdapter()

// error below: Type mismatch. Required:Observer<PagedList<MyItem!>!>
pagedListLiveData.observe(lifeCycleOwner, object : Observer<PagedList<MyItem>>() {
        override fun onChanged(items: PagedList<MyItem>) {
            Log.d(LOG_TAG, "submit PagedList")
            adapter.submitList(items)
        }
})
Run Code Online (Sandbox Code Playgroud)

Android Studio 突出显示了表达式中的一个错误:

对象:观察者<PagedList<MyItem>>

Error: Type mismatch. Required: Observer<PagedList<MyItem!>!>
Run Code Online (Sandbox Code Playgroud)

如何解决?

android kotlin android-livedata android-pagedlistview

3
推荐指数
1
解决办法
2060
查看次数