Я предполагаю, что это часть DefaultIteManimater, который решает, что должно произойти:
Код: Выделить всё
/**
* {@inheritDoc}
*
* If the payload list is not empty, DefaultItemAnimator returns true* When this is the case:
*
- *
- If you override {@link #animateChange(RecyclerView.ViewHolder, RecyclerView.ViewHolder, int, int, int, int)}, both
* ViewHolder arguments will be the same instance.
*
* -
* If you are not overriding {@link #animateChange(RecyclerView.ViewHolder, RecyclerView.ViewHolder, int, int, int, int)},
* then DefaultItemAnimator will call {@link #animateMove(RecyclerView.ViewHolder, int, int, int, int)} and
* run a move animation instead.
*
*
@Override
public boolean canReuseUpdatedViewHolder(@NonNull RecyclerView.ViewHolder viewHolder,
@NonNull List payloads) {
return !payloads.isEmpty() || super.canReuseUpdatedViewHolder(viewHolder, payloads);
}
Теперь решение моей проблемы состояла в том, чтобы просто назвать onitemrangechanged () с некоторой произвольной полезной нагрузкой, и это всегда повторно использует Viewholder .
мой вопрос:
Теперь я не буду удивляться, и когда это было лучше, а не в том, что это будет лучше, и когда это будет лучше, и когда это будет лучше, а не в конкретная часть этого? В задаче, упомянутой выше, я только что менял видимость небольшой части владельца просмотра, но все было воссоздано, что, я полагаю, намного хуже?>
Подробнее здесь: https://stackoverflow.com/questions/663 ... o-recreate
Мобильная версия