07-09 RecrcleView 简单使用二 (实现 树形列表
2018-07-09 本文已影响12人
喜欢萌妹子的少年
上一篇简单使用观看人数还满多,促使我赶紧再写一个简单的使用.
废话省略 几千万字 ...
效果如下:
树形结构.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();