Grid Recyclerview消失的项目,并且两个项目之间有一个空白单元格

时间:2018-11-05 13:47:02

标签: android

我正在使用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);
}

对此案有何建议? 谢谢!

1 个答案:

答案 0 :(得分:0)

您无法通过更改可见性来执行此操作。相反,您必须删除项目,我建议存储已删除项目的两个新列表以在需要时将其还原。

要删除,请使用此

public void removeAt(int position) {
      //try to store this item
      mDataset.remove(position);
      notifyItemRemoved(position);
      notifyItemRangeChanged(position, mDataSet.size());
  }