安卓用RecyclerView实现一层的展开与折叠

类似于上图的功能实现(展开只显示一层)

实现这个之前没有找到比较好的解决方案,现在才发现系统有个这个的控件:ExpandableListVIew.也是实现显示一层的折叠与展开。不过既然自己已经实现了,也不想白白浪费精力,所以写出来,以后也好自己看看(虽说写的不咋地,最起码也是实现了。)

开始:整体的布局是2个RecyclerView嵌套完成的,最外面一个大的Recyclerview包括标题和内容,里面一个图片的Recyclerview,这个暂不多说,主要还是说展开与折叠,这里面我是把内容和图片的Recyclerview当成一个整体,这样可以很好的显示与隐藏,我们直接看代码,然后在讲解;

这里的展开我是用的checkbox,这样可以更方便的知道展开与折叠。

这句话主要是判断是手动点击才触发点击事件(是为了当我setChecked()时会触发此listener),说一下大体思路:其实和多选差不多,首先创建一个集合,泛型是Interger类型,如果当我点击展开,就把当前的位置添加到集合里面去,然后改变字体颜色,显示图片布局,如果为false就是收起,然后遍历集合所以元素,如果其中一个和当前点击的值一样,说明当前元素所对应的checkbox为false,然后在在把当前的元素给清空,因为集合里面装的都是展开的位置。

最后的一个判断,是我后面添加的,因为我以为写完上面的就完美了,岂不知还有复用这个bug,因为当你第一个展开的时候,往下一直拉,会发现其他的复用条目也是展开的,这不是玩我呢吗?所以加这个判断就是为了当界面往下拉刷新界面的时候,会从新判断当前位置在不在集合里面,在的话就展开,不在就收起,这样就解决复用的问题了。over

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值