2016-06-04 4 views
0

У меня есть 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); 
      } 

+0

cau пожалуйста, поделитесь своим кодом? Также попробуйте дать «wrap_content» на высоту – prat

+0

не добавьте вещи. покажите нам свой код, чтобы мы могли проверить его на вашу проблему. – nomad

+0

Это происходит из-за «recylerView», сбрасывающего и повторно использующего представление. Пожалуйста, поделитесь своим адаптером, тогда я смогу помочь. –

ответ

-1

Ну, я добавил

android:clipToPadding="false"

к просмотр ресайклера и все отлично работает сейчас

Смежные вопросы