Как я могу обнаружить переработку из адаптера recyclerView, чтобы я мог выполнить действие до его переработки? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть recyclerview, который содержит поля с editTexts.При прокрутке данные в редактируемых текстах перепутываются или стираются из-за некоторых функций, которые я использую, и представлений, которые используются повторно.Это могло бы быть полностью решено, если бы я мог сохранить свои данные до того, как представление будет переработано.Как я могу обнаружить, что происходит внутри адаптера?

Ответы [ 4 ]

1 голос
/ 09 июля 2019

Надлежащий способ сделать это - установить TextWatcher в EditText, сохранить текст, переданный onTextChanged, в модель RecyclerView и получить его, когда вы снова привязываете свой вид, но если выВы хотите сделать это, когда идентификатор представления перерабатывается, вам необходимо переопределить метод onViewRecycled на вашем адаптере:

@Override
public void onViewRecycled(@NonNull RecyclerView.ViewHolder holder) {
    ...
}

Обратите внимание, что для получения уведомления о перезапуске представления, когдаДля воссоздания представлений вам также необходимо установить нулевой адаптер на RecyclerView.Вот пример использования фрагмента:

@Override
public void onDestroyView() {
    super.onDestroyView();
    mRecyclerView.setAdapter(null);
}
0 голосов
/ 11 июля 2019

Адаптер Android RecyclerView имеет вызванную функцию,

onViewAttchedToWindow ();

onViewDetachedFromWindow ();

onViewRecycled ();

Используйте эту функцию длядостичь.

0 голосов
/ 09 июля 2019

Просто добавьте приведенный ниже код в методе onBindViewHolder вашего адаптера:

viewHolder.setIsRecyclable(false);

, чтобы вы никогда не потеряли свои данные на свитке.

0 голосов
/ 09 июля 2019

При установке данных в представлениях внутри onBindViewHolder () метод использует vh.setIsRecyclable (false); это ограничит ваши представления для повторного использования.

...