删除项目,并且不要在GridLayoutManager Recyclerview中留出空间

时间:2018-08-27 09:26:02

标签: java android android-recyclerview gridlayoutmanager

我正在使用GridLayoutManager,其recyclerview的跨度计数为2。我尝试使用。

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

,但它在recyclerview内留有空间。那么有没有办法隐藏和删除recyclerview内部的空间?

编辑 (附加代码) 我正在使用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 :(得分:0)

从适配器的列表中删除项目后,可以使用notifyItemRemoved();notifyDataSetChanged();。这两个功能将刷新列表。