Leanback создает различные пользовательские представления строк - PullRequest
0 голосов
/ 11 октября 2018

Я использую библиотеку Leanback, и я хотел бы знать, как создать несколько пользовательских представлений строк.Для создания различных элементов подряд вам нужно расширить PresenterSelector

Я пытался сделать то же самое для ListRowPresenter, но не смог достичь правильного результата.Ни одна строка не была связана в RowsSupportFragment, и в журналах метод getPresenter из PresenterSelector вызывался несколько раз, пока не было нехватки памяти.

1 Ответ

0 голосов
/ 11 октября 2018

Для решения этой проблемы мне пришлось проверить репозиторий Leback Showcase

На основе класса 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 несколько раз, так это то, что я каждый раз по ошибке создавал новый объект для своего собственного предъявителя строки.

Надеюсь, это поможет кому-то в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...