购物车二级列表 全选

MainActivity

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".view.MainActivity">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20dp"
        android:text="购物车"
        />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/rec"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <View
        android:layout_width="match_parent"
        android:layout_height="2dp"
        android:background="#000" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal">

        <CheckBox
            android:id="@+id/checkbox_q"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginRight="20dp"
            android:text="全选" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:text="合计:"
            android:textColor="#f00" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center_vertical"
            android:layout_weight="1"
            android:text="¥123"
            android:textColor="#f00" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="结算"
            />

    </LinearLayout>


</LinearLayout>

//商家条目

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="horizontal"
        >
        <CheckBox
            android:id="@+id/checkbox123"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            />

        <TextView
            android:id="@+id/textt"
            android:textColor="#f00"
            android:textSize="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>


     <android.support.v7.widget.RecyclerView
         android:id="@+id/rec_show"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:layout_weight="1"
         >

     </android.support.v7.widget.RecyclerView>





</LinearLayout>

//商品条目

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    >

    <CheckBox
        android:id="@+id/checkbox123"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

    <com.facebook.drawee.view.SimpleDraweeView
        android:id="@+id/image"
        android:layout_width="150dp"
        android:layout_height="150dp" />

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <com.example.shoppingcart.view.Viewzdy
        android:id="@+id/view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    </com.example.shoppingcart.view.Viewzdy>



</LinearLayout>

//自定义view

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >

    <Button
        android:id="@+id/jian"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:textSize="18dp"
        />
    <TextView
        android:id="@+id/sum"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="123"
        android:textSize="18dp"
        />
    <Button
        android:id="@+id/jia"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="+"
        android:textSize="18dp"
        />

</LinearLayout>

//App

package com.example.shoppingcart.app;

import android.app.Application;
import android.os.Environment;

import com.facebook.cache.disk.DiskCacheConfig;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.imagepipeline.core.ImagePipelineConfig;

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();


        //自定义缓存
        DiskCacheConfig diskCacheConfig = DiskCacheConfig.newBuilder(this)
                .setBaseDirectoryName("images_zjj")
                .setBaseDirectoryPath(Environment.getExternalStorageDirectory()).build();

        //设置磁盘缓存的配置,生成配置文件
        ImagePipelineConfig config = ImagePipelineConfig.newBuilder(this)
                .setMainDiskCacheConfig(diskCacheConfig).build();



        Fresco.initialize(this, config);

    }
}

//契约类

package com.example.shoppingcart.cantract;


import com.example.shoppingcart.util.ServiceApI;

public interface IuWei {
    //model
    public interface DataModel{
        public ServiceApI getData();
    }

    //presenter
    public interface DataPresenter{
        public void getData(Object... arg);
    }

    //view
    public interface DataView{
        public void  showSuccess(Object o);
        public void  showFail(Throwable o);

    }
}




//model

package com.example.shoppingcart.model;

import com.example.shoppingcart.cantract.IuWei;
import com.example.shoppingcart.util.NetWork;
import com.example.shoppingcart.util.ServiceApI;

public class Model implements IuWei.DataModel {



    @Override
    public ServiceApI getData() {
        return NetWork.getNetWork().create(ServiceApI.class);
    }
}

//Presenter

package com.example.shoppingcart.presenter;

import com.example.shoppingcart.bean.ShoppingBean;
import com.example.shoppingcart.cantract.IuWei;
import com.example.shoppingcart.model.Model;

import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

public class Presenter implements IuWei.DataPresenter {

    IuWei.DataModel model;
    IuWei.DataView view;

    public Presenter(IuWei.DataView view) {
        this.view = view;
        model = new Model();
    }

    @Override
    public void getData(Object... arg) {
    //Rexjava
        model.getData().myget()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Consumer<ShoppingBean>() {
                    @Override
                    public void accept(ShoppingBean shoppingBean) throws Exception {
                        if (view != null){
                            view.showSuccess(shoppingBean);
                        }
                    }
                }, new Consumer<Throwable>() {
                    @Override
                    public void accept(Throwable throwable) throws Exception {
                        view.showFail(throwable);
                    }
                });
    }
}

//网路框架Retrofit

package com.example.shoppingcart.util;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class NetWork {

    private Retrofit retrofit;
    private static NetWork netWork;
    private static final String BASE_URI = "https://www.wanandroid.com/";
    private NetWork() {
        init();
    }

    public static NetWork getNetWork() {
        if (netWork == null) {
            synchronized (NetWork.class) {
                if (netWork == null) {
                    netWork = new NetWork();
                }
            }
        }
        return netWork;
    }

    private void init() {
        //拦截器
        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        OkHttpClient client = new OkHttpClient.Builder()
                .addInterceptor(httpLoggingInterceptor)
                .build();

        retrofit = new Retrofit.Builder()
                .client(client)
                .baseUrl(BASE_URI)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .build();

    }
    public <T> T create(final Class<T> service) {
        return retrofit.create(service);
    }
}


//API
package com.example.shoppingcart.util;

import com.example.shoppingcart.bean.ShoppingBean;

import io.reactivex.Observable;
import retrofit2.http.GET;

public interface ServiceApI {
//    https://www.wanandroid.com/tools/mockapi/6523/restaurant-list
    @GET("tools/mockapi/6523/restaurant-list")
    Observable<ShoppingBean> myget();

}

//view

package com.example.shoppingcart.view;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.CheckBox;
import android.widget.CompoundButton;

import com.example.shoppingcart.R;
import com.example.shoppingcart.bean.ShoppingBean;
import com.example.shoppingcart.cantract.IuWei;

import com.example.shoppingcart.presenter.Presenter;

import com.example.shoppingcart.util.ShoppingAdapter;

import java.util.List;

public class MainActivity extends AppCompatActivity implements IuWei.DataView {

    private Presenter presenter;
    private RecyclerView rec;
    private CheckBox checkboxQ;
    private ShoppingAdapter shoppingAdapter;
    private List<ShoppingBean.DataBean> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        checkboxQ = (CheckBox) findViewById(R.id.checkbox_q);
        rec = (RecyclerView) findViewById(R.id.rec);
        Presenter presenter = new Presenter(this);
        presenter.getData();
        checkboxQ.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                checkAll(isChecked);
            }
        });
    }


    @Override
    public void showSuccess(Object o) {

        ShoppingBean shoppingBean = (ShoppingBean) o;
        list = shoppingBean.getData();
        init(list);

    }


    @Override
    public void showFail(Throwable o) {

    }

    private void init(List<ShoppingBean.DataBean> list) {

        LinearLayoutManager manager = new LinearLayoutManager(this);
        rec.setLayoutManager(manager);
        shoppingAdapter = new ShoppingAdapter(list, this);
        rec.setAdapter(shoppingAdapter);
    }

   //全选
    private void checkAll(boolean isChecked) {
        for (int i = 0; i < list.size(); i++) {
            ShoppingBean.DataBean dataBean = list.get(i);
            dataBean.setCheck(isChecked);
            List<ShoppingBean.DataBean.SpusBean> spus = dataBean.getSpus();
            for (int j = 0; j < spus.size(); j++) {
                ShoppingBean.DataBean.SpusBean spusBean = spus.get(j);
                spusBean.setCheck(isChecked);
            }
        }
        shoppingAdapter.notifyDataSetChanged();
    }
}

//自定义view类

package com.example.shoppingcart.view;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.shoppingcart.R;

public class Viewzdy extends LinearLayout {

    private TextView sum;
    int num;

    private Button jian;
    private Button jia;


    public Viewzdy(Context context) {
        super(context);
    }

    public Viewzdy(final Context context, AttributeSet attrs) {
        super(context, attrs);
        View view = LayoutInflater.from(context).inflate(R.layout.viewzzz, this);

        sum = (TextView) view.findViewById(R.id.sum);
        jian = (Button)view.findViewById(R.id.jian);
        jia = (Button) view.findViewById(R.id.jia);

        jia.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
             num++;
             sum.setText(num+"");
            }
        });
        jian.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (num>0){
                    num--;
                    sum.setText(num+"");
                }else {
                    Toast.makeText(context,"够了",Toast.LENGTH_SHORT).show();
                }

            }
        });



    }

    public Viewzdy(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

    }
}

//adapter

package com.example.shoppingcart.util;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;

import com.example.shoppingcart.R;
import com.example.shoppingcart.bean.ShoppingBean;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

public class ShoppingAdapter extends RecyclerView.Adapter {

    List<ShoppingBean.DataBean> list;
    Context context;
    private List<ShoppingBean.DataBean.SpusBean> spus;

    public ShoppingAdapter(List<ShoppingBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        return new asd(LayoutInflater.from(context).inflate(R.layout.text,null));
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        if (viewHolder instanceof asd ) {
            ShoppingBean.DataBean dataBean = list.get(i);
            ((asd) viewHolder).textt.setText(dataBean.getName());
            //二级列表
            ((asd) viewHolder).recShow.setLayoutManager(new LinearLayoutManager(context));
            for (int j = 0; j <list.size() ; j++) {
                spus = list.get(i).getSpus();
            }
            AdapterS adapterS = new AdapterS(spus, context);
            ((asd) viewHolder).recShow.setAdapter(adapterS);
            //全选checkbox绑定
            ((asd) viewHolder).checkbox123.setChecked(list.get(i).isCheck());

        }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class asd extends RecyclerView.ViewHolder {

        private TextView textt;
        private CheckBox checkbox123;

        private RecyclerView recShow;

        public asd(@NonNull View itemView) {
            super(itemView);

            textt = (TextView) itemView.findViewById(R.id.textt);
            checkbox123 = (CheckBox)itemView. findViewById(R.id.checkbox123);
            recShow = (RecyclerView)itemView. findViewById(R.id.rec_show);
            
        }
    }
}



//adapter

package com.example.shoppingcart.util;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;

import com.example.shoppingcart.R;
import com.example.shoppingcart.bean.ShoppingBean;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

public class AdapterS extends RecyclerView.Adapter {

    List<ShoppingBean.DataBean.SpusBean> list;
    Context context;

    public AdapterS(List<ShoppingBean.DataBean.SpusBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        return new asd(LayoutInflater.from(context).inflate(R.layout.text2, null));
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        if (viewHolder instanceof asd) {
            ((asd) viewHolder).image.setImageURI(list.get(i).getPic_url());
            ((asd) viewHolder).text.setText(list.get(i).getName());
            ((asd) viewHolder).checkbox123.setChecked(list.get(i).isCheck());
        }
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class asd extends RecyclerView.ViewHolder {

        private CheckBox checkbox123;
        private SimpleDraweeView image;
        private TextView text;

        public asd(@NonNull View itemView) {


            super(itemView);


            checkbox123 = (CheckBox) itemView.findViewById(R.id.checkbox123);
            image = (SimpleDraweeView) itemView.findViewById(R.id.image);
            text = (TextView) itemView.findViewById(R.id.text);


        }
    }
}

//全选bean里boolean

private boolean isCheck=false;

        public boolean isCheck() {
            return isCheck;
        }

        public void setCheck(boolean check) {
            isCheck = check;
        }



//
private boolean isCheck=false;

            public boolean isCheck() {
                return isCheck;
            }

            public void setCheck(boolean check) {
                isCheck = check;
            }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值