【问题标题】:Leanback create different custom Row ViewsLeanback 创建不同的自定义行视图
【发布时间】:2019-03-16 14:54:18
【问题描述】:

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

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

【问题讨论】:

    标签: 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 的原因是,每次为我的自定义行演示者创建一个新对象时,我都会错误地创建。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-24
      • 2015-06-12
      • 2017-04-06
      • 1970-01-01
      • 2016-04-30
      • 2012-07-25
      相关资源
      最近更新 更多