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 implements MultiItemEntity {

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

第三步: 更改适配器 继承 BaseMultiItemQuickAdapter 适配 例:
public class LogChipAdapter extends BaseMultiItemQuickAdapter 
第四步: 绑定分级布局 例:
public LogChipAdapter(List 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();

你可能感兴趣的:(07-09 RecrcleView 简单使用二 (实现 树形列表))