RecyclerView - после удаления двух элементов из списка, а потом добавления их обратно, они накладываются друг на друга
Есть RecyclerView
, находящийся внутри алертдиалога. В нулевой позиции расположен item со свичом. Если свич вкл., то надо показать ещё два элемента под ним, а если выкл., то убрать эти элементы.
Беда в том, что если убрать элементы из списка, а потом снова добавить, то появляются их версии, которые были до удаления + свежедобавленные элементы прямо поверх них.
Все вьюшки создаются программно, без XML.
Вот код:
if (position == 0) {
MaterialSwitch switcher = DialogUtil.getRecyclerView().getLayoutManager().findViewByPosition(0).findViewWithTag("switch");
if (switcher.isChecked()) {
items.add(1, new RecyclerViewItem(RecyclerViewItem.OPTION_SNOOZE_SETTINGS_DURATION, getString(R.string.snooze_duration), 10, 5, 45, new LabelFormatter() {
@NonNull
@Override
public String getFormattedValue(float value) {
return getResources().getQuantityString(R.plurals.minutes, (int) value, (int) value);
}
}, true));
items.add(2, new RecyclerViewItem(RecyclerViewItem.OPTION_SNOOZE_SETTINGS_MAX_COUNT, getString(R.string.max_snoozes), 1, 1, 11, new LabelFormatter() {
@NonNull
@Override
public String getFormattedValue(float value) {
if (value != 11.0) {
return getResources().getQuantityString(R.plurals.times, (int) value, (int) value);
} else {
return getString(R.string.unlimited);
}
}
}, true));
DialogUtil.getRecyclerView().getAdapter().notifyItemRangeInserted(1, 2);
} else {
items.remove(2);
items.remove(1);
DialogUtil.getRecyclerView().getAdapter().notifyItemRangeRemoved(1, 2);
}
}