如何在 details fragment leanback 中扩充自定义布局

How to inflate custom layout in details fragment leanback

我需要在 DetailOverviewRow 之后 inflate/add 全宽自定义布局但是没有办法,你只能添加一个 ListRow。

我找到了答案:

首先,我需要创建一个扩展 RowPresenter 的 class 并将我的视图扩展到其中,还创建一个扩展 Row 并将我的数据放入其中的 class那。

FullWidthPresenter:

class FullWidthPresenter : RowPresenter() {

    override fun createRowViewHolder(parent: ViewGroup): ViewHolder {
        return ViewHolder(
            LayoutInflater.from(parent.context).inflate(
                R.layout.fullwidth_row,
                parent,
                false
            )
        )
    }
}

CustomRow

class CustomRow(val item: String) : Row()

正在使用:

val selector = ClassPresenterSelector().apply {

        FullWidthRowPresenter().also {
           addClassPresenter(CustomRow::class.java, it)
        }
      
        val rowsAdapter = ArrayObjectAdapter(selector)

        val customRow = CustomRow("Media Item Details")
        rowsAdapter.add(customRow)
        adapter = rowsAdapter
}