【问题标题】:Leanback create different custom Row ViewsLeanback 创建不同的自定义行视图
【发布时间】:2019-03-16 14:54:18
【问题描述】:
我正在使用 Leanback 库,我想知道如何创建多个自定义行视图。要连续创建不同的项目,您需要扩展 PresenterSelector
我尝试对ListRowPresenter 执行相同的操作,但无法获得正确的结果。
RowsSupportFragment 中没有绑定任何行,并且在日志中,来自 PresenterSelector 的 getPresenter 方法被多次调用,直到内存不足。
【问题讨论】:
标签:
android
android-tv
leanback
【解决方案1】:
为了解决这个问题,我必须检查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 的原因是,每次为我的自定义行演示者创建一个新对象时,我都会错误地创建。
我希望这对将来的某人有所帮助。