今天在项目中遇到一个需要隐藏item的要求,一开始将item的布局设置为GON,发现虽然没有显示但还占着位置,后来想到将item的宽高设置为0,就可以做到隐藏的效果。
在ViewHolder里面定义一个方法,然后在onBindViewHolder里面调用holder.setVisibility(false);这个方法就可以是实现隐藏效果,方法如下:
public class ViewHolder extends RecyclerView.ViewHolder { private final TextView left_text; private final ImageView right_image; private final TextView tv_right_text_image; private final TextView tv_name_toggleButton; private final ToggleButton tb_togglebutton; private final TextView tv_one_text; public ViewHolder(View itemView) { super(itemView); left_text = (TextView) itemView.findViewById(R.id.tv_left_text_two); right_image = (ImageView) itemView.findViewById(R.id.iv_right_image); tv_right_text_image = (TextView) itemView.findViewById(R.id.tv_right_text_image); tv_name_toggleButton = (TextView) itemView.findViewById(R.id.tv_name_toggleButton); tb_togglebutton = (ToggleButton) itemView.findViewById(R.id.tb_togglebutton); tv_one_text = (TextView) itemView.findViewById(R.id.tv_one_text); } public void setVisibility(boolean isVisible){ RecyclerView.LayoutParams param = (RecyclerView.LayoutParams)itemView.getLayoutParams(); if (isVisible){ param.height = LinearLayout.LayoutParams.WRAP_CONTENT; param.width = LinearLayout.LayoutParams.MATCH_PARENT; }else{ param.height = 0; param.width = 0; } itemView.setLayoutParams(param); } }