我正在使用Grid recyclerview作为分隔列。当我将某项目的可见性设置为“消失”时,我在两个项目之间有一个空白单元格。 我不想在位置上使用删除项,只是想设置此项的可见性。 请检查图片:UI 当我隐藏2号时,3号布局应移至2号。 No5和No6相同。 那是代码:
@Override
public void onBindViewHolder(final FeedItemViewHolder holder, final int position) {
boolean ad = item.get(position);
setVisibility(holder.itemView, ad);
break;
}
}
public void setVisibility(View view, boolean isVisible) {
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
if (isVisible) {
int margin = (int) mContext.getResources().getDimension(R.dimen.feed_card_margin);
params.height = LinearLayout.LayoutParams.WRAP_CONTENT;
params.width = LinearLayout.LayoutParams.MATCH_PARENT;
params.setMargins(margin, margin, margin, margin);
view.setVisibility(View.VISIBLE);
} else {
view.setVisibility(View.GONE);
params.setMargins(0, 0, 0, 0);
params.height = 0;
params.width = 0;
}
view.setLayoutParams(params);
}
对此案有何建议? 谢谢!
答案 0 :(得分:0)
您无法通过更改可见性来执行此操作。相反,您必须删除项目,我建议存储已删除项目的两个新列表以在需要时将其还原。
要删除,请使用此
public void removeAt(int position) {
//try to store this item
mDataset.remove(position);
notifyItemRemoved(position);
notifyItemRangeChanged(position, mDataSet.size());
}