类似于上图的功能实现(展开只显示一层)
实现这个之前没有找到比较好的解决方案,现在才发现系统有个这个的控件:ExpandableListVIew.也是实现显示一层的折叠与展开。不过既然自己已经实现了,也不想白白浪费精力,所以写出来,以后也好自己看看(虽说写的不咋地,最起码也是实现了。)
开始:整体的布局是2个RecyclerView嵌套完成的,最外面一个大的Recyclerview包括标题和内容,里面一个图片的Recyclerview,这个暂不多说,主要还是说展开与折叠,这里面我是把内容和图片的Recyclerview当成一个整体,这样可以很好的显示与隐藏,我们直接看代码,然后在讲解;
这里的展开我是用的checkbox,这样可以更方便的知道展开与折叠。
这句话主要是判断是手动点击才触发点击事件(是为了当我setChecked()时会触发此listener),说一下大体思路:其实和多选差不多,首先创建一个集合,泛型是Interger类型,如果当我点击展开,就把当前的位置添加到集合里面去,然后改变字体颜色,显示图片布局,如果为false就是收起,然后遍历集合所以元素,如果其中一个和当前点击的值一样,说明当前元素所对应的checkbox为false,然后在在把当前的元素给清空,因为集合里面装的都是展开的位置。
最后的一个判断,是我后面添加的,因为我以为写完上面的就完美了,岂不知还有复用这个bug,因为当你第一个展开的时候,往下一直拉,会发现其他的复用条目也是展开的,这不是玩我呢吗?所以加这个判断就是为了当界面往下拉刷新界面的时候,会从新判断当前位置在不在集合里面,在的话就展开,不在就收起,这样就解决复用的问题了。over