首页 > 解决方案 > Leanback 创建不同的自定义行视图

问题描述

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

我尝试为 做同样的事情,ListRowPresenter但无法获得正确的结果。没有绑定任何行,RowsSupportFragment并且在日志中多次调用getPresenter方法 from直到内存不足。PresenterSelector

标签: androidandroid-tvleanback

解决方案


为了解决这个问题,我不得不检查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被我多次调用的原因是我每次都错误地为我的自定义行演示者创建了一个新对象。

我希望这对将来的某人有所帮助。


推荐阅读