Функция RecyclerView.setIsRecyclable() владельца просмотра

0

Вопрос

Я хочу, чтобы мой держатель представления не перерабатывался, вот код:

@Override
public void onBindViewHolder(final ViewHolder viewHolder, final int position) {
    viewHolder.setIsRecyclable(false);
}

Однако, когда я вижу документацию здесь: https://developer.android.com/reference/androidx/recyclerview/widget/RecyclerView.ViewHolder#setIsRecyclable(boolean), написано, что setIsRecycleable() всегда должен быть сопряжен, и я понятия не имею об этом. Кто-нибудь может предоставить пример кода для этого случая? Когда я должен снова вызвать setIsRecyclable(true)? Спасибо.

enter image description here

3
0

Не перерабатывать ViewHolder просто означает, что конкретно ViewHolder будут сохранены и не перезаписаны, когда появятся новые данные для привязки, проблема в том, что Adapter затем потребуется предоставить еще один ViewHolder чтобы компенсировать то, что он не может использовать повторно.

Вот почему вам нужно в конечном итоге позволить ему переработаться, т. е. setIsRecycleable(true) потому что это как бы опровергает суть RecyclerView если в конечном итоге придется создавать новые представления для представления данных.

Причина, по которой вы, возможно, захотите отключить переработку, заключается в том, чтобы избежать прерываний, возможно, ViewHolder воспроизводит анимацию или загружает видео. Как только это будет сделано, вы сможете включить переработку, чтобы освободить ViewHolder чтобы убедиться, что его можно использовать снова.

2021-11-24 06:12:08
0

В этом случае лучше использовать Listview. Весь смысл recyclerview состоит в том, чтобы переработать представление. Еще посмотрите этот пост https://stackoverflow.com/a/36275862/3094367

2021-11-24 06:03:40
0

На самом деле утилизация связана с типом представления.
Вы просто меняете каждый тип элемента, который уникален
Нравится:

@Override
public int getItemType(int position){
    return position
}
2021-11-24 06:28:44

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................