Leanback 创建不同的自定义行视图

Leanback create different custom Row Views

我正在使用 Leanback 库,我想知道如何创建多个自定义行视图。要连续创建不同的项目,您需要扩展 PresenterSelector

我尝试对 ListRowPresenter 执行相同的操作,但无法获得正确的结果。 RowsSupportFragment 中没有绑定任何行,在日志中多次调用 PresenterSelector 中的 getPresenter 方法,直到内存不足。

为了解决这个问题,我必须检查 leanback showcase repository

基于 class 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 的原因是我每次都错误地为我的自定义行演示者创建了一个新对象。

我希望这对以后的人有所帮助。