# TreeAdapter **Repository Path**: huangjy1994/TreeAdapter ## Basic Information - **Project Name**: TreeAdapter - **Description**: 实现仿京东筛选列表,可折叠的recyclerview, 可以动态配置是否可折叠, 折叠后剩余显示子item数量 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-07-31 - **Last Updated**: 2021-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # TreeAdapter [ ![Download](https://api.bintray.com/packages/plumcookingwine/maven/TreeRvAdapter/images/download.svg) ](https://bintray.com/plumcookingwine/maven/TreeRvAdapter/_latestVersion) 1、# 使用: compile ‘com.plumcookingwine.tree:TreeRvAdapter:1.0.3’ 2、实体类的创建: TreeListDao是具体封装的对象, 里面有两个泛型,第一个就是父级对象,第二个就是子级集合; 其他属性为一些配置项: ``` // 是否可展开收起 private boolean isEnableExpand = true; // 默认是否展开状态 private boolean isExpand = false; // 收起状态最少展示子item数量 private int minCount = 6; ``` 目前支持这几种配置;以后会逐渐完善。。。 (举例) ` data class FilterDao( var _ID: Int = 0, var mTitle: String = "", var mDesc: String = "", var mCheckOption: List? ) ` ` data class OptionDao( var _ID: Int = 0, var mTitle: String = "", var mDesc: String = "", var isCheck: Boolean = false ) ` 其中FilterDao 是父级对象, OptionDao是子级对象,最后将这两个对象放到TreeListDao对象中: ``` private fun initData(): MutableList> { val list = mutableListOf>() for (i in 0..5) { val dao = TreeListDao() val filterDao = FilterDao(i, "title$i", "title$i", null) val subs = mutableListOf() for (j in 0..20) { val subListDao = OptionDao(j, "o${j}t${i}", "o${j}t${i}", false) subs.add(subListDao) } dao.groupDao = filterDao dao.subList = subs if (i % 2 == 0) { dao.isMultiCheck = true } list.add(dao) } return list } ``` 2、创建adapter继承自AbsTreeListAdapter,将TreeListDao传进来,重写方法: ``` // 组item的layoutId public abstract int groupLayoutId(); // 子item的layoutId public abstract int subLayoutId(); // 绑定组item数据(K 为传进来的父对象泛型) public abstract void onBindGroupHolder(GroupItemViewHolder holder, K k, int groupIndex, int position); // 绑定子item数据(V 为传进来的子对象泛型) public abstract void onBindSubHolder(SubItemViewHolder holder, V v, int subIndex, int groupIndex, int position); ``` ## 效果 ### 效果: ## 实现 具体的实现原理请看文章: ## https://blog.csdn.net/qq_22090073/article/details/86623042