CartLayout(严格说应该叫 CartAdapter 的,现在将错就错吧 😀)
使用纯原生 RecyclerView 实现购物车效果(高仿京东购物车、淘宝购物车、天猫购物车)。不要问我为什么不使用 ExpandableListView (爱过,被坑的次数多了,就不爱了)。
Demo 中主要实现以下功能(基本上购物车的功能全实现了):
To get a Git project into your build:
Step 1. Add the JitPack repository to your build file Add it in your root build.gradle at the end of repositories:
allprojects {repositories {...maven { url 'https://jitpack.io' }}}Step 2. Add the dependency dependencies { implementation 'com.github.OCNYang:CartLayout:v1.0.7'}创建 Adapter:
// 创建你自己的 Adapter 继承 CartAdapter 并实现对应方法。public class MyAdapter extends CartAdapter<CartViewHolder> { public MainAdapter(...) { super(...); } // 返回对应的 itemViewHolder @Override protected CartViewHolder getXXXViewHolder(View itemView) {} // 返回对应的 item 布局文件 @Override protected int getXXXItemLayout() { return R.layout.activity_main_item_XXX; } // 根据布局类型渲染不同的布局 @Override public void onBindViewHolder(@NonNull CartViewHolder holder, final int position) { super.onBindViewHolder(holder, position); if (holder instanceof ChildViewHolder) { ... } else if (holder instanceof GroupViewHolder) { ... } else if (holder instanceof NormalViewHolder) { ... } }}将 Adapter 设置给 RecyclerView:
recyclerView.setLayoutManager(new LinearLayoutManager(this));mAdapter = new MyAdapter(this, getData());// 设置是否可以折叠,默认不可折叠; (建议使用)也可以通过 Adapter 的构造方法传入 mAdapter = new MyAdapter(this, getData(), true);mAdapter.setCanCollapsing(true);// 设置勾选状态变化的监听器,用来统计总价等逻辑,(必须要设置)mAdapter.setOnCheckChangeListener(new CartOnCheckChangeListener(recyclerView, mAdapter) { @Override public void onCalculateChanged(ICartItem cartItemBean) { calculate(); }});recyclerView.setAdapter(mAdapter);// 给列表注册 ContextMenu 事件。registerForContextMenu(recyclerView);更详细的使用方法请查看 Demo,Demo 中实现方式和各方法的作用在注释中写的很详细。
APK下载地址
直接下载 aar 包使用