Android自定义ExpandableRecyclerView的原理

最近在做项目的时候,用到了可扩展的RecyclerView.在github上找到了一个ListView的第三方库,比较臃肿,下面是自己实现的一个可扩展RecyclerView.源代码地址点我
演示地址

原理

首先要把整个扩展RecyclerView的功能逻辑分成两部分:

  1. 根据TAG来判断每个ViewHolder所对应的展开状态
    通过对每一个ViewHolder中的触发扩展事件的LinearLayout使用setTag()方法,设置TAG,每一个数据的position就是这个唯一的TAG.然后把已经变成展开状态的ViewHolder中事件触发按钮的TAG记录下来.当数据绑定时,根据得到的TAG是否是展开状态的TAG来设置View的展开状态.
  2. 当点击某个item,改变展开状态时,上一个展开过的item(如果有的话)状态要还原,但是上一个item有可能已经被复用了,所以要重写onViewRecycled()方法,判断上一个展开的viewHolder是否被复用,再做处理.

推荐阅读更多精彩内容