首页 文章

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

提问于
浏览
0

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

我尝试为_287577做同样的事情,但无法达到正确的结果 . 在 RowsSupportFragment 和日志中没有绑定行, PresenterSelector 中的 getPresenter 方法被多次调用,直到内存不足 .

1 回答

  • 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 是因为我每次为自定义行演示者创建一个新对象时都会出错 .

    我希望这将有助于将来的某些人 .

相关问题