• Stars
    star
    130
  • Rank 277,575 (Top 6 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🦄 使用 RecyclerView 实现店铺分组购物车。 高仿京东购物车、高仿淘宝购物车、高仿天猫购物车

CartLayout(严格说应该叫 CartAdapter 的,现在将错就错吧 😀)

GitHub issues   GitHub forks   GitHub stars

使用纯原生 RecyclerView 实现购物车效果(高仿京东购物车、淘宝购物车、天猫购物车)。不要问我为什么不使用 ExpandableListView (爱过,被坑的次数多了,就不爱了)。

Demo 中主要实现以下功能(基本上购物车的功能全实现了):

  • 商品列表通过店铺进行分组显示;
  • 勾选店铺,联动店铺下的所有商品勾选;勾选商品,联动店铺的勾选;
  • 全选功能实现:联动商品、店铺的勾选按钮,反向联动亦然;
  • 实现编辑购物车商品的功能:点击编辑 > 删除勾选的商品;
  • 实现商品 item 长按弹出选项菜单,进行单个商品删除等操作功能;
  • 支持列表头部添加 tips ;
  • 统计勾选商品的个数、勾选商品价格等;
  • 折叠功能 点击店铺标题,折叠起对应的商品条目;
  • 添加折叠效果的动画效果

Version Code

CartAdapter效果图

导入方法:

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.3'
}

使用方法:

创建 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下载地址

More Repositories

1

Android-Animation-Set

📚 Android 所有动画系列详尽教程。 Explain all animations in Android.
Java
2,804
star
2

QBox

🐈 RxJava+Retrofit+Okhttp+Glide + A life tool App, contains modules: news; jokes; constellation fortune; LED; weather; calendar; two-dimensional code, and more ... 小秋魔盒是一个生活工具 App,主要功能有:新闻资讯;微信精选美文;笑话趣图;星座运势;LED字幕;天气;日历;二维码;手电筒;老黄历。在开发中尽可能多的用了目前比较流行的框架和库。
Java
1,380
star
3

PageTransformerHelp

👍 A PageTransformer library for Android ViewPager,have some Banner styles. ViewPager 实现轮播图、实现卡片切换。
Java
599
star
4

ContourView

🦄 利用本库绘制出贝塞尔曲线魔炫背景。Customize view:Draw the magic dazzle background with Bézier.
Java
575
star
5

RecyclerViewEvent

RecyclerView onItemClick、onItemLongClick、drag、swipe、divider、reuse disorder RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除、优雅解决 EditText 和 CheckBox 复用错乱问题、定向刷新、DiffUtil、局部刷新
Kotlin
299
star
6

AndroidBang

《Android 江湖花名册》
114
star
7

flutter_ui_kit

UI Kit of CookMe by Flutter;
Dart
45
star
8

FontTest

屏幕适配的顶级淫技:使用 TextView 来显示图片
Java
27
star
9

AnchorImageViewDemo

图片锚点定位;【图片画圈定位 请移步 👉https://github.com/OCNYang/DrawPartViewDemo】
Java
15
star
10

ConstraintLayout_Guide

全面讲解 ConstraintLayout 相关知识,目前最强大的布局控件,没有之一,不接受反驳。
Kotlin
8
star
11

DrawPartViewDemo

🎯 图片画圈定位;【图片锚点定位 请移步 👉https://github.com/OCNYang/AnchorImageViewDemo】
Java
6
star
12

Flutter-Notes

收集学习 Flutter 不错的教程。
5
star
13

Linux

开启 Linux 之行
5
star
14

Support

索拉卡-通用库
Java
2
star
15

GSYVideoPlayer-master

Java
1
star
16

OCNYang

GitHub 首页 简介
1
star
17

iconfont2strings

批量将 iconfont 中的字符转换成 Android 中的字符串资源 strings.xml
Java
1
star
18

EFall

💌 筑一座柔城,愿每一次心的疲惫,都能在这得到安慰......
1
star