Как выполнить RecyclerView.ViewHolder onCreateViewHolder повторно

В зависимости от настроек внешний вид элементов списка отличается

    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    RecyclerView.ViewHolder viewHolder;
    View view;
    int idResLayout;
    switch (viewType) {
        case SELF:
            idResLayout = isUseNewInterface ? R.layout.item_self2 : R.layout.item_self;
            view = LayoutInflater.from(parent.getContext())
                    .inflate(idResLayout, parent, false);
            viewHolder = new ViewHolderSelf(view);
            break;
        default:
            idResLayout = isUseNewInterface ? R.layout.item2 : R.layout.item;
            view = LayoutInflater.from(parent.getContext())
                    .inflate(idResLayout, parent, false);
            viewHolder = new ViewHolder(view);
    }
    return viewHolder;
}

При смене настроек, получается так, что часть элементов списка остается старой, а часть новой. Можно ли как то выполнить пересоздание ViewHolder


Ответы (1 шт):

Автор решения: Yura Ivanov

Разделите новый интерфейс и старый по viewType'ам.

case SELF_NEW: item_self2;
case SELF: item_self

И соответственно в getItemViewType указывайте актуальный viewType.

→ Ссылка