我正在使用leanback库,我想知道如何创建多个自定义行视图。要在一行中创建不同的项,需要扩展PresenterSelector
我试着对ListRowPresenter
做同样的操作,但是没有得到正确的结果。RowsSupportFragment
中没有绑定行,并且在日志中多次调用getPresenter
中的PresenterSelector
方法,直到内存不足。
最佳答案
为了解决这个问题,我必须检查leanback showcase repository
基于类ShadowRowPresenterSelector我设法找到了如何为我的自定义rowpresenters创建选择器。
class ShadowRowPresenterSelector : PresenterSelector() {
private val aCustomListRowPresenter by lazy { ACustomListRowPresenter() }
private val bCustomListRowPresenter by lazy { BCustomListRowPresenter() }
override fun getPresenter(item: Any): Presenter {
return when (item) {
is ARowVM -> {
aCustomListRowPresenter
}
is BRowVM -> {
bCustomListRowPresenter
}
else -> aCustomListRowPresenter
}
}
override fun getPresenters(): Array<Presenter> {
return arrayOf(aCustomListRowPresenter, bCustomListRowPresenter)
}
}
导致我多次调用方法
getPresenter
的原因是,每次为自定义行演示者创建新对象时,我都会出错。我希望这对将来的人有帮助。