RecycleView实现二级列表(可以实现多级列表)
RecyclerView做的二级列表比官方的ExpandableListView二级列表效率高一些貌似
1.自己的Adapter继承RecyclerView.Adapter
2.然后搞两个 int 类型的成员变量表示item是几级
3. List里面这个就是数据源了 只不过这个存放的类型是个接口类型的数据 自己的一级item和二级item都去实现这个接口 然后这个适配器就可以add这个接口类型的数据了 原理就是这样 接下来看实际操作
基本操作
4. getItemCount 直接返回上面数据源的大小就行 return data.size
5. 然后是getItemViewType 这里用instanceof判断一下item是几级的 然后返回出去对应的类型就行
6. 下面两个holder 一个一级Holder 一个二级Holder 这个就不需要多解释了
7. 接下来就是在数据源里处理数据了
!!!!!!切记我们要首先add进来一级列表 所以需要setInitData一下 我这里是这样处理的
设置进来的list取一级的bean去给数据源添加进去 然后刷新一下notifyDataSetChanged(); 这时候大家应该可以想到了现在adapter用上的话应该就是展示了一级列表了 但是怎么点击一下展示出来二级列表呢?这时候就需要在onBindViewHolder里面进行控制一些点击事件了
这里是我做的一下展示是否展开的处理 大家可以不看 主要看我holder.itemView.setOnClickListener里面的事件
文章来源:https://www.toymoban.com/news/detail-404543.html
上面return前的可以不看 是我做的一些单选的东西 不是有关展开一级列表的东西 主要看
int pos = holder.getAdapterPosition(); 下面的这些 这个是取个position用来操作去add的位置和remove的位置
然后如果不是展开的情况的话就去for了他的二级列表 然后 data.add(拿数据源去add进去) 这时候要在这个点击的一级的item这里展开 所以就用到了我们刚刚取的pos(游标) 然后进行 notifyItemInserted(pos + 1); 完事的话记得把这个bean里的 isExpandABC 字段设置为true 以上就是展开事件的原理了 接下来看收回 收回也是同理 for一下他的二级列表 然后拿data数据源去remove掉每个二级的item (这里只是用一下for的次数 for的内容完全没用到) remove掉之后就该刷新ui了 直接 notifyItemRemoved(pos + 1); 完事 大功告成 搞完之后记得把 isExpandABC 字段设置为false 接下来补上实体类的图
文章来源地址https://www.toymoban.com/news/detail-404543.html
Details是2级的 BudgetTypeBean是1级的 一目了然了吧 是不是挺简单的
如果有疑问不懂的加我Q:
到了这里,关于RecycleView 二级列表(多级列表)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!