У меня есть recyclerview с 2 видами вида разной высоты. Тот, у кого большая высота, почти покрывает весь экран. Тип представления по умолчанию для элемента является меньшим и при нажатии на него я меняю тип представления на более крупный и вызываю notifyItemChanged для этого элемента.Элементы RecyclerView, исчезающие при изменении типа просмотра
Теперь давайте предположим, что у меня есть 5 предметов с небольшими видами, и все они видны на экране. Когда я нажимаю на третий элемент, он преобразуется в более крупный. и видны только 3 предмета, то есть 1-й, 2-й и 3-й. Теперь, когда я прокручиваю вниз, я не вижу 4-й и 5-й предметы. Но когда я прокручиваю вверх, а затем прокручиваю вниз, появляется 4-й и 5-й позиции.
Любые объяснения этого поведения и как его исправить ??
@Override
public int getItemViewType(int position) {
if(items.get(position).isExpanded())
return ITEM_EXPANDED;
else
return ITEM_COLLAPSED;
}
@Override
public int getItemCount() {
return items.size();
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(mContext);
switch (viewType){
case ITEM_COLLAPSED:
return new ViewHolder(inflater.inflate(R.layout.collapsed_item,null),items);
case ITEM_EXPANDED:
return new ViewHolder(inflater.inflate(R.layout.expanded_item,null),items);
}
}
и этот метод в классе зрения держателя для изменения вида типа
void onViewChanged(){
int currentPosition = getAdapterPosition();
items.get(currentPosition).setExpanded(!items.get(currentPosition).isExpanded());
notifyItemChanged(currentPosition);
}
cau пожалуйста, поделитесь своим кодом? Также попробуйте дать «wrap_content» на высоту – prat
не добавьте вещи. покажите нам свой код, чтобы мы могли проверить его на вашу проблему. – nomad
Это происходит из-за «recylerView», сбрасывающего и повторно использующего представление. Пожалуйста, поделитесь своим адаптером, тогда я смогу помочь. –