Java 删除项目并删除';不要在GridLayoutManager回收视图中留下空间
我正在为我的recyclerview使用跨度计数为2的GridLayoutManager。我试着用它Java 删除项目并删除';不要在GridLayoutManager回收视图中留下空间,java,android,android-recyclerview,gridlayoutmanager,Java,Android,Android Recyclerview,Gridlayoutmanager,我正在为我的recyclerview使用跨度计数为2的GridLayoutManager。我试着用它 itemView.setVisibility(View.GONE); itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0)); 但它在回收视图中留下了一个空间。那么,有没有办法隐藏和删除recyclerview中的空间 编辑 (附加代码) 我正在使用FirebaseRecyclerAdapter显示所有数据 private
itemView.setVisibility(View.GONE);
itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0));
但它在回收视图中留下了一个空间。那么,有没有办法隐藏和删除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
}
}
private ArrayList mWorldGroupKeys;
@凌驾
受保护的无效onBindViewHolder(@NonNull ViewHolder,int位置,@NonNull组模型){
字符串groupKeys=getRef(位置).getKey();
如果(!mWorldGroupKeys.contains(groupKeys)){
持票人:下线(位置);
回来
}
绑定(模型);
}
类ViewHolder扩展了RecyclerView.ViewHolder{
无效布局边界(内部位置){
已删除的项目(pos);
//给了我一个错误:
//IllegalStateException:在运行时无法调用此方法
//RecyclerView正在计算布局或滚动
//android.support.v7.widget.RecyclerView
}
}
您可以使用notifyItemRemoved()代码>或notifyDataSetChanged()代码>从适配器上的列表中删除该项后。这两个函数将刷新列表 notifyItemRemoved()
。我试过了,但它给了我一个错误。在您的问题中出现了错误。您正在尝试隐藏该项目。您可以做的是从列表中删除该项目,然后notifyItemRemoved()代码>例如:列表。删除(位置)代码>如果(!mWorldGroupKeys.contains(groupKeys)){mWorldGroupKeys.remove(position);notifyItemRemoved(position)return;}
请尝试此操作