购物车 全选全部选

BaseActivity 抽取Activity基类

public abstract class BaseActivity

extends AppCompatActivity implements IContract.IView {
public P p;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(initLayout());
    p = initPresenter();
    if (p!=null){
        p.onAttach(this);
    }
    initView();
    initData();
}

protected abstract void initData();

protected abstract void initView();

protected abstract P initPresenter();

protected abstract int initLayout();

@Override
protected void onDestroy() {
    super.onDestroy();
    if (p!=null){
        p.onunAttach();
        p=null;
    }
}

}

BasePresenter抽取Presenter基类

public abstract class BasePresenter implements IContract.IPresenter {
public V v;
public void onAttach(V v){
this.v = v;
}
public void onunAttach(){
if (v!=null){
v=null;
}
}
}

Api

public interface ApiService {
@GET
Observable getInfo(@Url String url);
@GET
Observable getInfoParams(@Url String url, @QueryMap Map<String,Object> map);
@POST
Observable postInfoParams(@Url String url,@QueryMap Map<String,Object> map);
}

MyUrls

public interface MyUrls {
//店铺
String BASEURL=“http://blog.zhaoliang5156.cn/”;
//商品
String SHOPPING = “api/mall/shoppingcart.json”;
}

Icontract

public interface IContract {
interface MyCallBack{
void onSuccess(T t);
void onError(String error);
}
interface IModel{
void getInfo(String url, Class cls,MyCallBack myCallBack);
void getInfoParams(String url,Class cls,Map map,MyCallBack myCallBack);
void postInfoParams(String url,Class cls,Map map,MyCallBack myCallBack);
}
interface IView{
void onSuccess(T t);
void onError(String onError);
}
interface IPresenter{
void getInfo(String url,Class cls);
void getInfoParasms(String url,Class cls,Map map);
void postInfoParams(String url,Class cls,Map map);
}
}

网络工具类

public class MyUtil {

private final OkHttpClient okHttpClient;
private final Retrofit retrofit;
private final ApiService apiService;

private MyUtil(){
    HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
    interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
    okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(10, TimeUnit.SECONDS)
            .readTimeout(10, TimeUnit.SECONDS)
            .addInterceptor(interceptor)
            .build();
    retrofit = new Retrofit.Builder()
            .baseUrl(MyUrls.BASEURL)
            .client(okHttpClient)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    apiService = retrofit.create(ApiService.class);
}
private static class MyHolder{
    private static MyUtil myUtil = new MyUtil();
}
public static MyUtil getInstance(){
    return MyHolder.myUtil;
}
public void getInfo(String url, final Class cls, final MyCallBack myCallBack){
    apiService.getInfo(url).subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<ResponseBody>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(ResponseBody responseBody) {
                    Gson gson = new Gson();
                    try {
                        Object o = gson.fromJson(responseBody.string(), cls);
                        myCallBack.onSuccess(o);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }

                @Override
                public void onError(Throwable e) {
                    myCallBack.onError(e.getMessage());
                }

                @Override

                public void onComplete() {

                }
            });
}
public interface MyCallBack<T>{
    void onSuccess(T t);
    void onError(String error);
}

}

M层

public class MyModel implements IContract.IModel {

@Override
public void getInfo(String url, Class cls, final IContract.MyCallBack myCallBack) {
    MyUtil.getInstance().getInfo(url, cls, new MyUtil.MyCallBack() {
        @Override
        public void onSuccess(Object o) {
            myCallBack.onSuccess(o);
        }

        @Override
        public void onError(String error) {
            myCallBack.onError(error);
        }
    });
}

@Override
public void getInfoParams(String url, Class cls, Map map, IContract.MyCallBack myCallBack) {

}

@Override
public void postInfoParams(String url, Class cls, Map map, IContract.MyCallBack myCallBack) {

}

}

P层

public class MyPresenter extends BasePresenter {
MyModel myModel = new MyModel();
@Override
public void getInfo(String url, Class cls) {
myModel.getInfo(url, cls, new IContract.MyCallBack() {
@Override
public void onSuccess(Object o) {
v.onSuccess(o);
}

        @Override
        public void onError(String error) {
            v.onError(error);
        }
    });
}

@Override
public void getInfoParasms(String url, Class cls, Map map) {

}

@Override
public void postInfoParams(String url, Class cls, Map map) {

}

}

MyBean

public class ShoppingBean {

/**
 * code : 200
 * orderData : [{"shopId":1,"shopName":"每日蔬鲜专卖店","cartlist":[{"id":1,"shopId":1,"shopName":"每日蔬鲜专卖店","defaultPic":"http://blog.zhaoliang5156.cn/api/images/%E8%8F%A0%E8%8F%9C.png","productId":1,"productName":"菠菜","color":"颜色:白色","meal":"套餐:默认套餐","price":3,"count":1},{"id":2,"shopId":1,"shopName":"每日蔬鲜专卖店","defaultPic":"http://blog.zhaoliang5156.cn/api/images/%E8%83%A1%E8%90%9D%E5%8D%9C.png","productId":2,"productName":"胡萝卜","color":"颜色:红色","meal":"套餐:默认套餐","price":4,"count":1}]},{"shopId":2,"shopName":"鸡蛋专卖店","cartlist":[{"id":1,"shopId":2,"shopName":"鸡蛋专卖店","defaultPic":"http://blog.zhaoliang5156.cn/api/images/%E9%B8%A1%E8%9B%8B.png","productId":1,"productName":"鸡蛋","color":"颜色:白色","meal":"套餐:默认套餐","price":10,"count":1}]}]
 */

private int code;
private List<OrderDataBean> orderData;

public int getCode() {
    return code;
}

public void setCode(int code) {
    this.code = code;
}

public List<OrderDataBean> getOrderData() {
    return orderData;
}

public void setOrderData(List<OrderDataBean> orderData) {
    this.orderData = orderData;
}

public static class OrderDataBean {
    /**
     * shopId : 1
     * shopName : 每日蔬鲜专卖店
     * cartlist : [{"id":1,"shopId":1,"shopName":"每日蔬鲜专卖店","defaultPic":"http://blog.zhaoliang5156.cn/api/images/%E8%8F%A0%E8%8F%9C.png","productId":1,"productName":"菠菜","color":"颜色:白色","meal":"套餐:默认套餐","price":3,"count":1},{"id":2,"shopId":1,"shopName":"每日蔬鲜专卖店","defaultPic":"http://blog.zhaoliang5156.cn/api/images/%E8%83%A1%E8%90%9D%E5%8D%9C.png","productId":2,"productName":"胡萝卜","color":"颜色:红色","meal":"套餐:默认套餐","price":4,"count":1}]
     */

    private int shopId;
    private String shopName;
    private List<CartlistBean> cartlist;
    private boolean groupFlag;

    public boolean isGroupFlag() {
        return groupFlag;
    }

    public void setGroupFlag(boolean groupFlag) {
        this.groupFlag = groupFlag;
    }

    public int getShopId() {
        return shopId;
    }

    public void setShopId(int shopId) {
        this.shopId = shopId;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public List<CartlistBean> getCartlist() {
        return cartlist;
    }

    public void setCartlist(List<CartlistBean> cartlist) {
        this.cartlist = cartlist;
    }

    public static class CartlistBean {
        /**
         * id : 1
         * shopId : 1
         * shopName : 每日蔬鲜专卖店
         * defaultPic : http://blog.zhaoliang5156.cn/api/images/%E8%8F%A0%E8%8F%9C.png
         * productId : 1
         * productName : 菠菜
         * color : 颜色:白色
         * meal : 套餐:默认套餐
         * price : 3
         * count : 1
         */

        private int id;
        private int shopId;
        private String shopName;
        private String defaultPic;
        private int productId;
        private String productName;
        private String color;
        private String meal;
        private int price;
        private int count;
        private boolean childFlag;

        public boolean isChildFlag() {
            return childFlag;
        }

        public void setChildFlag(boolean childFlag) {
            this.childFlag = childFlag;
        }

        public int getId() {
            return id;
        }

        public void setId(int id) {
            this.id = id;
        }

        public int getShopId() {
            return shopId;
        }

        public void setShopId(int shopId) {
            this.shopId = shopId;
        }

        public String getShopName() {
            return shopName;
        }

        public void setShopName(String shopName) {
            this.shopName = shopName;
        }

        public String getDefaultPic() {
            return defaultPic;
        }

        public void setDefaultPic(String defaultPic) {
            this.defaultPic = defaultPic;
        }

        public int getProductId() {
            return productId;
        }

        public void setProductId(int productId) {
            this.productId = productId;
        }

        public String getProductName() {
            return productName;
        }

        public void setProductName(String productName) {
            this.productName = productName;
        }

        public String getColor() {
            return color;
        }

        public void setColor(String color) {
            this.color = color;
        }

        public String getMeal() {
            return meal;
        }

        public void setMeal(String meal) {
            this.meal = meal;
        }

        public int getPrice() {
            return price;
        }

        public void setPrice(int price) {
            this.price = price;
        }

        public int getCount() {
            return count;
        }

        public void setCount(int count) {
            this.count = count;
        }
    }
}

}

MainActivity

public class MainActivity extends BaseActivity {

ExpandableListView liste;
CheckBox box_big;
private MyPresenter myPresenter;
private List<ShoppingBean.OrderDataBean> slist = new ArrayList<>();
private MyAdapter myAdapter;
private boolean Flag;

@Override
protected void initData() {
    myPresenter.getInfo(MyUrls.SHOPPING,ShoppingBean.class);
    myAdapter = new MyAdapter(slist, MainActivity.this);
    liste.setAdapter(myAdapter);
}

@Override
protected void initView() {
    liste = findViewById(R.id.liste);
    box_big = findViewById(R.id.box_big);
}

@Override
protected BasePresenter initPresenter() {
    myPresenter = new MyPresenter();
    return myPresenter;
}

@Override
protected int initLayout() {
    return R.layout.activity_main;
}

@Override
public void onSuccess(final Object o) {
    if (o instanceof ShoppingBean){
        Log.i("aa", "onSuccess: " + o.toString());
        slist.addAll(((ShoppingBean) o).getOrderData());
        myAdapter.notifyDataSetChanged();
    }
    myAdapter.onClick(new MyAdapter.onCallBack() {
        @Override
        public void group(int groupPosition) {
            slist.get(groupPosition).setGroupFlag(!slist.get(groupPosition).isGroupFlag());
            for (int i = 0; i < slist.get(groupPosition).getCartlist().size(); i++) {
                slist.get(groupPosition).getCartlist().get(i).setChildFlag(slist.get(groupPosition).isGroupFlag());
            }
            all();
            myAdapter.notifyDataSetChanged();
        }

        @Override
        public void child(int groupPosition, int childPosition) {
            slist.get(groupPosition).getCartlist().get(childPosition).setChildFlag(!slist.get(groupPosition).getCartlist().get(childPosition).isChildFlag());
            int num = 0;
            for (int i = 0; i < slist.get(groupPosition).getCartlist().size(); i++) {
                if (!slist.get(groupPosition).getCartlist().get(i).isChildFlag()){
                    break;
                }
                    num++;
            }
                    if (num == slist.get(groupPosition).getCartlist().size()){
                        slist.get(groupPosition).setGroupFlag(true);
                    }else {
                        slist.get(groupPosition).setGroupFlag(false);
                    }
                    all();
                    myAdapter.notifyDataSetChanged();
        }
    });
    box_big.setChecked(Flag);
    box_big.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            box_big.setChecked(!Flag);
            Flag = !Flag;
            for (int i = 0; i < slist.size(); i++) {
                slist.get(i).setGroupFlag(Flag);
                for (int j = 0; j <slist.get(i).getCartlist().size() ; j++) {
                    slist.get(i).getCartlist().get(j).setChildFlag(Flag);
                }
            }
            myAdapter.notifyDataSetChanged();
        }
    });
}

private void all() {
    int num = 0;
    for (int i = 0; i < slist.size(); i++) {
        if (!slist.get(i).isGroupFlag()){
            break;
        }
        num++;

    }
    if (num ==slist.size()){
        box_big.setChecked(true);
    }else {
        box_big.setChecked(false);
    }
}

@Override
public void onError(String onError) {

}

}

MyAdapter

public class MyAdapter extends BaseExpandableListAdapter {
List<ShoppingBean.OrderDataBean> slist;
Context mContext;

public MyAdapter(List<ShoppingBean.OrderDataBean> slist, Context mContext) {
    this.slist = slist;
    this.mContext = mContext;
}

@Override
public int getGroupCount() {
    return slist.size();
}

@Override
public int getChildrenCount(int groupPosition) {
    return slist.get(groupPosition).getCartlist().size();
}

@Override
public Object getGroup(int groupPosition) {
    return null;
}

@Override
public Object getChild(int groupPosition, int childPosition) {
    return null;
}

@Override
public long getGroupId(int groupPosition) {
    return 0;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
    return 0;
}

@Override
public boolean hasStableIds() {
    return false;
}

@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    oneHolder holder;
    if (convertView==null){
        holder = new oneHolder();
        convertView = View.inflate(mContext, R.layout.one_layout,null);
        holder.box1 = convertView.findViewById(R.id.box1);
        holder.te1 = convertView.findViewById(R.id.te1);
        convertView.setTag(holder);
    }else {
        holder = (oneHolder) convertView.getTag();
    }
    holder.te1.setText(slist.get(groupPosition).getShopName()+"");
    holder.box1.setChecked(slist.get(groupPosition).isGroupFlag());
    holder.box1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            callBack.group(groupPosition);
        }
    });
    return convertView;
}

@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    twoHolder holder;
    if (convertView==null){
        holder = new twoHolder();
        convertView = View.inflate(mContext,R.layout.two_layout,null);
        holder.box_one = convertView.findViewById(R.id.box_one);
        holder.img = convertView.findViewById(R.id.img);
        holder.te_one = convertView.findViewById(R.id.te_one);
        holder.te_two = convertView.findViewById(R.id.te_two);
        convertView.setTag(holder);
    }else {
        holder = (twoHolder) convertView.getTag();
    }
    Glide.with(mContext).load(slist.get(groupPosition).getCartlist().get(childPosition).getDefaultPic()).into(holder.img);
    holder.te_one.setText(slist.get(groupPosition).getCartlist().get(childPosition).getShopName()+"");
    holder.te_two.setText(slist.get(groupPosition).getCartlist().get(childPosition).getPrice()+"");
    holder.box_one.setChecked(slist.get(groupPosition).getCartlist().get(childPosition).isChildFlag());
    holder.box_one.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            callBack.child(groupPosition,childPosition);
        }
    });
    return convertView;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
    return false;
}
class oneHolder{
    CheckBox box1;
    TextView te1;
}
class twoHolder{
    ImageView img;
    TextView te_one;
    TextView te_two;
    CheckBox box_one;
}
onCallBack callBack;
public interface onCallBack{
    void group(int groupPosition);
    void child(int groupPosition,int childPosition);
}

public void onClick(onCallBack callBack) {
    this.callBack = callBack;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值