RecyclerView findViewHolderForLayoutPosition и findViewHolderForAdapterPosition возвращают ноль - PullRequest
0 голосов
/ 18 октября 2019

Я просто пытаюсь, чтобы мой держатель отображался на экране, но методы findViewHolderFor * почти всегда получают нулевой объект.

Мой код из моего адаптера:

fun getVisibleViewHolder(recyclerView: RecyclerView) {
    for (i in 0 until recyclerView.childCount) {
        val viewHolder = recyclerView.findViewHolderForLayoutPosition(i) // null: most of the time (specially when scroll performed)
        val viewHolder = recyclerView.findViewHolderForAdapterPosition(i) // idem
    }
}

Иногда это работает, но это редко.

1 Ответ

1 голос
/ 18 октября 2019

Итак, я нашел решение! И объяснение. recyclerView.childCount = Номер элемента в родительском элементе, который явно отличается от позиции!

    for (i in 0 until recyclerView.childCount) {
        val view = recyclerView.getChildAt(i)
        val viewHolder = recyclerView.findContainingViewHolder(view)
        ... // the purpose, getting the data from the user here
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...