Удалите элемент и не оставляйте место в GridLayoutManager Recyclerview - PullRequest
0 голосов
/ 27 августа 2018

Я использую GridLayoutManager со счетчиком промежутков 2 для моего просмотра переработчика.Я пытался использовать.

itemView.setVisibility(View.GONE);
itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0)); 

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

РЕДАКТИРОВАТЬ (Дополнительные коды) Я использую FirebaseRecyclerAdapter для отображения всех данных.

private ArrayList<String> mWorldGroupKeys;

@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull Groups model) {
    String groupKeys = getRef(position).getKey();

    if (!mWorldGroupKeys.contains(groupKeys)) {
        holder.layoutHide(position);
        return;
    }

    holder.bind(model);
}

class ViewHolder extends RecyclerView.ViewHolder {

      void layoutHide(int pos) {

          notifyItemRemoved(pos);
          //Gave me an error of:
          //IllegalStateException: Cannot call this method while 
          //RecyclerView is computing a layout or scrolling
          //android.support.v7.widget.RecyclerView
       }
}

1 Ответ

0 голосов
/ 27 августа 2018

Вы можете использовать notifyItemRemoved(); или notifyDataSetChanged(); после удаления элемента из списка на адаптере. Эти 2 функции обновят список.

...