3

我正在使用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)
        }
})

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

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

Error: Type mismatch. Required: Observer<PagedList<MyItem!>!>

如何解决?

4

3 回答 3

6

感谢 Kingfisher Phuoc 和 Jeel Vankhede。问题在于导入观察者。此代码工作正常:

pagedListLiveData.observe(lifeCycleOwner, android.arch.lifecycle.Observer{
    adapter.submitList(it)
})
于 2019-04-11T06:31:47.327 回答
0

这是你的observer问题。您可以执行以下操作:

pagedListLiveData.observe(lifeCycleOwner, Observer{
     adapter.submitList(it)
})

否则,您应该通过使用确保PagedList<MyItem>不为空PagedList<MyItem!>!

于 2019-04-11T05:15:01.820 回答
0

对于那些在这里的人,您之前已经从 LiveData 订阅中删除了“观察者”一词。但是出了点问题,过了一会儿,Android Studio 开始要求你把 Observer 带回来。出现“类型不匹配。必需:发现观察者:() -> 单位”之类的错误

  1. 转到文件->设置->语言和框架-> Kotlin
  2. 将“更新 chanel”切换为“稳定”
  3. 单击“再次检查”按钮。
  4. 单击“安装”按钮。
  5. 重启 Android Studio

PS如果你没有安装按钮,你可能还需要将更新频道从“稳定”切换到其他东西,然后再次使其“稳定”。

于 2021-05-21T13:51:18.360 回答