我有一个回收站视图,它在开始时具有header元素和子元素,子元素的可见性消失了。我希望当我点击标题元素时假设该位置的零位子元素应该是可见的(平均展开)我成功实现了这一点。我面临的唯一问题是,当我再次点击相同的位置时,我想要折叠相同的视图。
我的回收视图onBingViewHolder逻辑如下: -
holder.doc_type.setText(docDatalist.get(position).getDocTypeDesc());
if (position == expandedPosition )
{
holder.recyclerViewImages.setVisibility(View.VISIBLE);
imagerequestserver(docDatalist.get(expandedPosition), vinappserial, holder);
holder.iconexpandCollapse.setImageResource(R.mipmap.expand_4);
}
else {
holder.recyclerViewImages.setVisibility(View.GONE);
holder.iconexpandCollapse.setImageResource(R.mipmap.expand);
}
holder.myDocumentListCollapse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (expandedPosition >= 0) {
int prev = expandedPosition;
holder.recyclerViewImages.setVisibility(View.VISIBLE);
notifyItemChanged(prev);
}else {
expandedPosition = holder.getAdapterPosition();
notifyItemChanged(expandedPosition);
}
}
});
先谢谢。
答案 0 :(得分:0)
您需要手动添加已点击的位置数组,然后在viewHolder中检查其位置后;
在构造函数中提供折叠位置列表
positionSet = new ArrayList<>();
在标题点击侦听器点击事件中添加和删除适当的位置:
public void onClick(View view) {
int position = getAdapterPosition();
if(positionSet.contains(position)){
positionSet.remove((Integer)position);
}else {
positionSet.add(position);
}
notifyDataSetChanged();
}
}
管理以在onBindViewHolder中通知
if(positionSet.contains(position)){
//visible
}else {
//gone
}