我正在使用Leanback库,我想知道如何创建多个自定义行视图。要连续创建不同的项目,您需要扩展PresenterSelector
我尝试对ListRowPresenter
做相同的操作,但无法获得正确的结果。
RowsSupportFragment
中没有绑定任何行,在日志中,getPresenter
中的PresenterSelector
方法被多次调用,直到内存不足为止。
答案 0 :(得分:0)
要解决此问题,我必须检查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
被多次调用的原因是,每次为自定义行演示者创建一个新对象时,我都会错误地创建一个。
我希望这会在将来对某人有所帮助。