我正在使用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的原因是,每次为自定义行演示者创建新对象时,我都会出错。
我希望这对将来的人有帮助。

09-10 05:49
查看更多