Android Adapter适配器onBindViewHolder中隐藏布局不留空白

适配器Adapter中,当我们onCreateViewHolder之后才会走到onBindViewHolder,也就是说,当我们想隐藏当前View的时候,布局是已经绘制好了,就等着数据填充了,那么在onBindViewHolder中直接将GroupView设置View.GONE行不行?
答案是肯定的,“不行!”,我们会发现,直接Gone隐藏当前布局,列表中会出现空白区域。

我们需要的答案在这里,我们要将LinearLayout.LayoutParams的宽高都设置为0才可以,以下是onBindViewHolder()中的隐藏操作:

if (books == null || books.size() == 0) {
       viewHolder.itemView.setVisibility(View.GONE);
       // 需要将GroupView中的所有子View宽高都设置0
       LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(0, 0);//根据自己的布局,来选择相应的LayoutParams
      viewHolder.itemView.setLayoutParams(layoutParams);
      return;
}

以上确实存在消耗性能的情况,如果设计需要如此操作没什么问题,如果是类似我这种因为数据不完整而去如此,则不如先去删除不完整的数据做尝试,感谢评论区的哥们!

你可能感兴趣的:(Android Adapter适配器onBindViewHolder中隐藏布局不留空白)