Android,RecyclerView - 用隐形物品做点什么

时间:2016-03-16 06:09:42

标签: android android-recyclerview

我使用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变为空,我无法删除不可见的项目,有没有办法解决此问题?

1 个答案:

答案 0 :(得分:0)

尝试将ID分配给onBindViewHolder内的布局(或布局内的项目),并仅根据ID进行更改。

另一种选择是维护HashMap<Integer,String>,其中Integer将是项目的位置,String可用于存储它的状态,如“可见”或“不可见”。

这是因为在滚动时,很多时候,内部的RecyclerView确实在维护脏视图和维护其ID时会造成一些混乱。更好,我们维护它并控制它们。

link解释了RecyclerView的工作原理。