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

Posted

技术标签:

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

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

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

【问题讨论】:

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

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

【讨论】:

以上是关于Leanback 创建不同的自定义行视图的主要内容,如果未能解决你的问题,请参考以下文章

在 Android Studio 中向列表视图添加自定义行

每行具有不同布局的Android ListView

具有自定义行布局的 ListView - Android

xlform 使用笔尖的自定义行

UITableViewCell 的自定义行动画

列表视图自定义行