07-09 RecrcleView 简单使用二 (实现 树形列表)

上一篇简单使用观看人数还满多,促使我赶紧再写一个简单的使用.
废话省略 几千万字 ...
效果如下:


树形结构.png

五步走轻松实现:

第一步:初始化RecycleView
        //固定大小 可以减少测量次数 算是优化了一丢丢吧
        rlv_container.setHasFixedSize(true);
        WrapContentGridLayoutManager manager = new WrapContentGridLayoutManager(getBaseActivity(), 1);
        manager.setOrientation(LinearLayout.VERTICAL);
        rlv_container.setLayoutManager(manager);
第二步: 绑定实体类层级 继承 AbstractExpandableItem 实现 MultiItemEntity 接口:
public class LogChip extends AbstractExpandableItem<Chip> implements MultiItemEntity {

PS: LogChip 为一级数据实体 Chip 为二级数据实体

第三步: 更改适配器 继承 BaseMultiItemQuickAdapter 适配 例:
public class LogChipAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity, BaseViewHolder> 
第四步: 绑定分级布局 例:
public LogChipAdapter(List<MultiItemEntity> data) {

        super(data);
        // 第一级分类标示:对应一级实体返回TYPE 值 
        addItemType(TYPE_LEVEL_0, R.layout.item_log_chip);
        // 第二级分类标示:对应二级实体返回TYPE 值 
        addItemType(TYPE_LEVEL_1, R.layout.item_log_detail);

    }
第五步: 根据TYPE 实现数据填充
@Override
    protected void convert(final BaseViewHolder helper, MultiItemEntity item) {

        switch (helper.getItemViewType()) {
            case TYPE_LEVEL_0:

                final LogChip logChip = (LogChip) item;

                helper
                        .setText(R.id.tv_time, logChip.payTime)
                        .setText(R.id.tv_money, logChip.payMonyt)
                        .setText(R.id.tv_type, logChip.payType);

                helper.itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        int pos = helper.getAdapterPosition();

                        if (logChip.isExpanded()) {
                            collapse(pos, false);
                        } else {
                            expand(pos, true);
                        }
                    }
                });

                break;
            case TYPE_LEVEL_1:

                final Chip Chip = (Chip) item;

                helper
                        .setText(R.id.tv_id, Chip.id)
                        .setText(R.id.tv_type, Chip.type)
                        .setText(R.id.tv_number, Chip.number)
                        .setText(R.id.tv_price, Chip.price);


                break;
        }

有些UI 希望默认就是展开所有层级的 我们可以如下设置,不需要就不用设置了.
getAdapter().expandAll();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,417评论 25 709
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,837评论 8 265
  • 她不自信。 她觉得大多数女生比她身材好,比她漂亮,甚至比她聪明。她仅有的小骄傲来源于学习上的偶有收获。她敏感但善良...
    迪小卡阅读 2,490评论 2 4
  • 姓名:刘敬武 公司:临沂和创饲料有限公司 【反省总结第45天,始于20180420今天是20180603】 【知~...
    0dbb66a89a27阅读 1,170评论 0 1
  • 晚上戴着耳机听歌入眠,好像睡着了一阵子,突然醒来时发现已经过了12点,日历提醒我今天生日,另一个提醒是填一次普鲁斯...
    南百城阅读 3,008评论 0 3