我使用recyclerView
来实施ExpandableList
我希望当用户点击parent
视图时,其他展开的父级会崩溃。它适用于下面的代码:
private void collapseOthers(int position) {
for (int i = 0; i < ol.size(); i++) {
OrderForShow o = ol.get(i);
if (i != position) {
if (!o.isChild()) {
if (o.getChilds() == null) {
RecyclerView.ViewHolder vh = rView.findViewHolderForAdapterPosition(i);
if (vh != null)
vh.itemView.findViewById(R.id.root_layer).performClick();
}
}
}
}
}
但是当用户向下滚动时,上面的项目将为空,vh
变为空,我无法删除不可见的项目,有没有办法解决此问题?
答案 0 :(得分:0)
尝试将ID分配给onBindViewHolder
内的布局(或布局内的项目),并仅根据ID进行更改。
另一种选择是维护HashMap<Integer,String>
,其中Integer将是项目的位置,String可用于存储它的状态,如“可见”或“不可见”。
这是因为在滚动时,很多时候,内部的RecyclerView确实在维护脏视图和维护其ID时会造成一些混乱。更好,我们维护它并控制它们。
这link解释了RecyclerView的工作原理。