关键操作
notifyItemChanged(getAdapterPosition());
更新特定位置的item状态
setVisibility(View.VISIBLE)
使这个view可见或消失
第一步:插个旗子判断是否是可见状态
/**
* -1表示item折叠
*/
private static int isOpen = -1;
第二步:添加点击事件
通过打印出的log可以理解原理
//点击这个控件就展开/折叠
deviceName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isOpen == getAdapterPosition()) {
//当点击的item已经被展开了, 就关闭.
Log.e(TAG, "onClick1: "+ isOpen);
isOpen = -1;
notifyItemChanged(getAdapterPosition());
} else {
int oldisOpen = isOpen;
Log.e(TAG, "onClick2: "+ isOpen);
isOpen = getAdapterPosition();
Log.e(TAG, "onClick3: "+ isOpen);
notifyItemChanged(oldisOpen);
notifyItemChanged(isOpen);
}
}
});
第三步:更新View
这里的childLayout代表的是你想要隐藏的整个layout
//在onBindViewHolder中
if (isOpen == position) {
holder.childLayout.setVisibility(View.VISIBLE);
} else {
holder.childLayout.setVisibility(View.GONE);
}
比如这个设备号为需要点击的头,下面的内容都需要隐藏的则都放入childLayout中