BaseRecyclerViewAdapterHelper之BaseMultiItemQuickAdapter实现多级列表功能

    xiaoxiao2021-03-25  151

    这里实现的是一个三级列表效果,可展开和收起。

    三个实体类ExpandItem、Expand1Item和Expand2Item,均要继承AbstractExpandableItem,实现接口MultiItemEntity.

    public class ExpandItem extends AbstractExpandableItem<Expand1Item> implements MultiItemEntity { private String title;    public ExpandItem(String title){ this.title = title;    } @Override    public int getLevel() { return 0;    } @Override    public int getItemType() { return QuickExpandableAdapter.TYPE_LEVEL_0;    } public String getTitle() { return title;    } public void setTitle(String title) { this.title = title;    } } public class Expand1Item extends AbstractExpandableItem<Expand2Item> implements MultiItemEntity { private String title;    public Expand1Item(String title){ this.title = title;    } @Override    public int getLevel() { return 1;    } @Override    public int getItemType() { return QuickExpandableAdapter.TYPE_LEVEL_1;    } public String getTitle() { return title;    } public void setTitle(String title) { this.title = title;    } } public class Expand2Item implements MultiItemEntity { private String title;    public Expand2Item(String title){ this.title = title;    } @Override    public int getItemType() { return QuickExpandableAdapter.TYPE_LEVEL_2;    } public String getTitle() { return title;    } public void setTitle(String title) { this.title = title;    } }

    一个适配器QuickExpandableAdapter,继承自BaseMultiItemQuickAdapter。

    public class QuickExpandableAdapter extends BaseMultiItemQuickAdapter<MultiItemEntity, BaseViewHolder> { public static final int TYPE_LEVEL_0 = 0;    public static final int TYPE_LEVEL_1 = 1;    public static final int TYPE_LEVEL_2 = 2;    /**     * Same as QuickAdapter#QuickAdapter(Context,int) but with     * some initialization data.     *     * @param data A new list is created out of this one to avoid mutable list     */    public QuickExpandableAdapter(List<MultiItemEntity> data) { super(data);        addItemType(TYPE_LEVEL_0, R.layout.view_expand_0);        addItemType(TYPE_LEVEL_1, R.layout.view_expand_1);        addItemType(TYPE_LEVEL_2, R.layout.view_expand_2);    } @Override    protected void convert(final BaseViewHolder helper, MultiItemEntity item) { switch (helper.getItemViewType()){ case TYPE_LEVEL_0: final ExpandItem item0 = (ExpandItem) item;                helper.setText(R.id.expand_list_item0_tv,item0.getTitle());                helper.itemView.setOnClickListener(new View.OnClickListener() { @Override                    public void onClick(View v) { int pos = helper.getAdapterPosition();                        if (item0.isExpanded()){ collapse(pos);                            ToastUtils.showShortToast("收起:" + item0.getTitle());                        }else { expand(pos);                            ToastUtils.showShortToast("展开:" + item0.getTitle());                        } } });                break;            case TYPE_LEVEL_1: final Expand1Item item1 = (Expand1Item) item;                helper.setText(R.id.expand_list_item1_tv,item1.getTitle());                helper.itemView.setOnClickListener(new View.OnClickListener() { @Override                    public void onClick(View v) { int pos = helper.getAdapterPosition();                        if (item1.isExpanded()){ collapse(pos, false);                            ToastUtils.showShortToast("收起:" + item1.getTitle());                        } else { expand(pos, false);                            ToastUtils.showShortToast("展开:" + item1.getTitle());                        } } });                break;            case TYPE_LEVEL_2: final Expand2Item item2 = (Expand2Item) item;                helper.setText(R.id.expand_list_item2_tv,item2.getTitle());                helper.itemView.setOnClickListener(new View.OnClickListener() { @Override                    public void onClick(View v) { ToastUtils.showShortToast("点击:" + item2.getTitle());                    } });                break;        } } }

    实现类QuickExpandableActivity

    public class QuickExpandableActivity extends BaseRecyclerViewActivity { private QuickExpandableAdapter expandableAdapter;    @Override    protected int getLayoutResId() { return super.getLayoutResId();    } @Override    protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState);        titleNameTv.setText("实现多级列表功能");        expandableAdapter = new QuickExpandableAdapter(getExpandListData(10));        expandableAdapter.openLoadAnimation(BaseQuickAdapter.SLIDEIN_RIGHT);        recyclerView.setAdapter(expandableAdapter);        expandableAdapter.expandAll(0,true);    } @Override    protected void onRefreshComplete() { expandableAdapter.addData(0,getExpandListData(2));        recyclerView.scrollToPosition(0);    } private List<MultiItemEntity> getExpandListData(int count) { int lvCount = count;        int lv1Count = 3;        int lv2Count = 5;        List<MultiItemEntity> data = new ArrayList<>();        for (int i = 0; i < lvCount; i++) { ExpandItem item0 = new ExpandItem("一级列表标题" + i);            for (int j = 0; j < lv1Count; j++) { Expand1Item item1 = new Expand1Item("二级列表标题" + j);                for (int k = 0; k < lv2Count; k++) { item1.addSubItem(new Expand2Item("三级列表标题" + k));                } item0.addSubItem(item1);            } data.add(item0);        } return data;    } } 效果图如下:
    转载请注明原文地址: https://ju.6miu.com/read-4848.html

    最新回复(0)