Я успешно реализовал RecyclerView и недавно столкнулся с дополнительным вариантом использования при удалении некоторых элементов из представления.
Я передаю держатель представления методу RecyclerView.ViewHolder viewHolder
и затем обращаюсь к методу ViewHolder getAdapterPosition()
вроде так:
int position = viewHolder.getAdapterPosition();
Проблема в том, что после вызова этого несколько раз. (После удаления нескольких предметов.) Он устанавливает позицию как -1
. Я знаю это из-за журналов. Я также знаю, что при удалении первого элемента проблем не возникает и вызывается notifyDataSetChanged()
.
Является ли это еще одним конкретным методом обновления, который может гарантировать, что позиция никогда не будет возвращена как -1, кроме встроенной проверки?
ОБНОВЛЕНИЕ: getAdapterPosition()
возвращал NO_POSITION
потому что проход макета не произошел с момента последнего вызова notifyDataSetChanged()
. Использование getLayoutPosition()
решает проблему возврата -1.