android - Leanback 创建不同的自定义行视图
问题描述
我正在使用 Leanback 库,我想知道如何创建多个自定义行视图。要连续创建不同的项目,您需要扩展PresenterSelector
我尝试为 做同样的事情,ListRowPresenter
但无法获得正确的结果。没有绑定任何行,RowsSupportFragment
并且在日志中多次调用getPresenter
方法 from直到内存不足。PresenterSelector
解决方案
为了解决这个问题,我不得不检查leaback 展示存储库
基于类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
被我多次调用的原因是我每次都错误地为我的自定义行演示者创建了一个新对象。
我希望这对将来的某人有所帮助。