购物车页面实现 :Okhttp+mvp+RecyclerView

1.清单文件配置请求网络权限:

<!--网络请求的权限-->
<uses-permission android:name="android.permission.INTERNET"/>

2.设置依赖:1.Okhttp(网络请求); 2.RecyclerView(条目展示); 3.Glide(请求图片); 4.Gson(解析)

compile 'com.squareup.okhttp3:okhttp:3.10.0'
compile 'com.android.support:recyclerview-v7:26.1.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.google.code.gson:gson:2.2.4'

3.Model层:1.接口;2.实现类

package com.example.myshopping.model;
import com.example.myshopping.presenter.DataPresenter;

//创建接口
public interface DataModel {

    //定义请求数据的方法
    //参数:1.请求数据接口的url 2.P层的接口(用于将获取的数据集合传回P)
    void getData(String url, DataPresenter presenter);
}
package com.example.myshopping.model;
import com.example.myshopping.presenter.DataPresenter;
import com.example.myshopping.urils.OkhtttpUtils;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.List;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

//创建接口实现类 实现接口 重写接口中定义的方法
public class MyDataModel implements DataModel{

    //重写请求数据的方法
    @Override
    public void getData(String url, final DataPresenter presenter) {

        //使用OkHttp进行请求 重写失败与成功的方法
        OkhtttpUtils.doGet(url, new Callback() {

            //失败
            @Override
            public void onFailure(Call call, IOException e) {}

            //成功
            @Override
            public void onResponse(Call call, Response response) throws IOException {

                //获取服务器返回的数据
                String json = response.body().string();

                //使用Gson解析进行解析
                Gson gson = new Gson();

                //得到解析后的数据
                MyData myData = gson.fromJson(json, MyData.class);

                //得到解析后的list集合
                List<MyData.DataBean> list = myData.getData();

                //调用P层的方法,将获取的数据集合传回P                presenter.Success(list);

            }
        });

    }
}
4.Presenter层:1.接口; 2.实现类

package com.example.myshopping.presenter;
import com.example.myshopping.model.MyData;
import java.util.List;

//创建接口
public interface DataPresenter {

    //定义成功与失败的方法
    //参数:1.接收返回的数据集合
    void Success(List<MyData.DataBean> list);
    void Error();

}

package com.example.myshopping.presenter;
import com.example.myshopping.model.MyData;
import com.example.myshopping.model.MyDataModel;
import com.example.myshopping.view.DataView;
import java.util.List;


//创建接口实现类 实现接口 重写接口中定义的方法
public class MyDataPresenter implements DataPresenter{


    //3.创建构建器 把V层传入到P    DataView dataView;
    private final MyDataModel model;
    public MyDataPresenter(DataView dataView) {
        this.dataView=dataView;

        //4.实例化M        model = new MyDataModel();
    }

    //成功 接收从M层传来的集合数据
    @Override
    public void Success(List<MyData.DataBean> list) {

            //5.调用V层接收数据的方法 把list集合传回m            dataView.toBackHome(list);
    }

    //失败
    @Override
    public void Error() {}

    //1.定义接收数据接口url的方法
    public void netWrok(String url){

        //6.调用m层请求数据的方法,将接口urlp层传到M        model.getData(url,this);

    }
}
5.View层:1.接口; 2.实现类

package com.example.myshopping.view;
import com.example.myshopping.model.MyData;
import java.util.List;

//创建接口
public interface DataView {
    //定义接收数据的方法
    void toBackHome(List<MyData.DataBean> list);
}

package com.example.myshopping.view;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.myshopping.R;
import com.example.myshopping.adapter.MyAdapter;
import com.example.myshopping.model.MyData;
import com.example.myshopping.presenter.MyDataPresenter;
import java.util.List;

public class MainActivity extends AppCompatActivity implements DataView{

    private ImageView my_icon;
    private RecyclerView my_rcy;
    private CheckBox my_cb;
    private TextView my_zj;
    private TextView my_js;
    int i=0;//用于判断图片的切换

    //请求数据的接口
    String url = "https://www.zhaoapi.cn/product/getProducts?pscid=1";

    //创建Handler
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            //获取msg传来的数据 需强转
            List<MyData.DataBean> list = (List<MyData.DataBean>) msg.obj;

            //设置适配器 将MainActivity和集合传给适配器
            MyAdapter myAdapter = new MyAdapter(MainActivity.this,list);

            //将适配器设置到my_rcy            my_rcy.setAdapter(myAdapter);

        }
    };

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

        //找到资源控件的ID
        my_icon = findViewById(R.id.my_icon);//图片
        my_rcy = findViewById(R.id.my_rcy);//布局
        my_cb = findViewById(R.id.my_cb);//全选
        my_zj = findViewById(R.id.my_zj);//总价
        my_js = findViewById(R.id.my_js);//件数

        //设置线性布局管理器  (工程一加载时,默认显示线性布局)
        my_rcy.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));

        //给图片设置点击事件 实现点击图片时切换线性与表格布局
        my_icon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                i++;
                //进行判断 当i%2==0时则显示线性布局,否则显示表格布局
                if(i%2==0){
                    //设置线性布局管理器
                    my_rcy.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false));
                }else{
                    //设置表格布局管理器
                    my_rcy.setLayoutManager(new GridLayoutManager(MainActivity.this,2));
                }
            }
        });

        //2.1实例化p层 将MainActivity(DataView)传给P        MyDataPresenter presenter = new MyDataPresenter(this);

        //2.2调用传送url的方法
        presenter.netWrok(url);
    }

    //7.接收P层传来的数据 因其在子线程中,所有需使用Handler更新ui
    @Override
    public void toBackHome(List<MyData.DataBean> list) {

            //创建Message对象
            Message msg = new Message();

            //list集合传入msg
            msg.obj=list;

            //msg传给handler
            handler.sendMessage(msg);

    }
}
6.RecyclerView.Adapter适配器:
package com.example.myshopping.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.myshopping.R;
import com.example.myshopping.model.MyData;
import com.example.myshopping.view.MainActivity;
import java.util.List;

//创建适配器 继承RecyclerView.Adapter 重写其3个方法
public class MyAdapter extends RecyclerView.Adapter{

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

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        //引入条目布局
        View view = View.inflate(context, R.layout.rcy_item, null);

        //创建MyViewHolder,将view传到MyViewHolder
        MyViewHolder myViewHolder = new MyViewHolder(view);

        //myViewHolder返回
        return myViewHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

        //将系统自带的holder与自定义的MyViewHolder进行绑定
        MyViewHolder myViewHolder = (MyViewHolder) holder;

        //myViewHolder中的控件进行赋值
        myViewHolder.rcy_title.setText(list.get(position).getTitle());//标题
        myViewHolder.rcy_price.setText(list.get(position).getPrice()+"");//价格
        myViewHolder.rcy_num.setText(list.get(position).getSellerid()+"");//数量

        //使用Glide为图片赋值
        String imgurl="http://www.ca-maimai.com/Public/kindeditor_images/image/20140828/20140828125439_54766.jpg";
        Glide.with(context).load(imgurl).into(myViewHolder.rcy_img);

    }

    //条目的数量
    @Override
    public int getItemCount() {
        return list.size();
    }

    //创建ViewHolder 继承RecyclerView.ViewHolder
    class MyViewHolder extends RecyclerView.ViewHolder {

        private final CheckBox rcy_cb;
        private final ImageView rcy_img;
        private final TextView rcy_title;
        private final TextView rcy_price;
        private final Button rcy_jian;
        private final TextView rcy_num;
        private final Button rcy_add;
        private final ImageView rcy_delete;

        public MyViewHolder(View itemView) {
            super(itemView);

            //通过传来的View,找到条目布局中的控件
            rcy_cb = itemView.findViewById(R.id.rcy_cb);
            rcy_img = itemView.findViewById(R.id.rcy_img);
            rcy_title = itemView.findViewById(R.id.rcy_title);
            rcy_price = itemView.findViewById(R.id.rcy_price);
            rcy_jian = itemView.findViewById(R.id.rcy_jian);
            rcy_num = itemView.findViewById(R.id.rcy_num);
            rcy_add = itemView.findViewById(R.id.rcy_add);
            rcy_delete = itemView.findViewById(R.id.rcy_delete);

        }
    }


}
7.OkhtttpUtils工具类:
package com.example.myshopping.urils;
import android.os.Environment;
import java.io.File;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import okhttp3.Cache;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
public class OkhtttpUtils {

    //单例模式,把构造方法进行私有化
    public OkhtttpUtils(){};
    static  OkHttpClient client;

    public static OkHttpClient getInstance(){

        if (client==null) {
            //更加安全
            synchronized (OkhtttpUtils.class) {
                //缓存的地方     mnt/sdcard
                File file = new File(Environment.getExternalStorageDirectory(), "cache11");
                client = new OkHttpClient().newBuilder()
                        .readTimeout(3000, TimeUnit.SECONDS)   //设置读取超时时间
                        .connectTimeout(3000, TimeUnit.SECONDS) //设置连接的超时时间
                        .cache(new Cache(file, 10 * 1024))
                        .build();
            }
        }
        return client;
    }


    /**
     * get请求
     * Callback  是一个接口
     */
    public static void doGet(String url, Callback callback){

        //1:拿到okhttpclient  对像

        OkHttpClient client = getInstance();
        //2:进行请求的操作

        Request request = new Request.Builder()
                .url(url)
                .build();
        client.newCall(request).enqueue(callback);
    }

    //post请求

    /**
     *
     * @param url  请求的地址
     * @param parms   请求的参数
     * @param callback  callback
     */
    public static void doPost(String url, Map<String,String> parms,Callback callback){

        //得到客户端的对像
        OkHttpClient client = getInstance();

        //不是FormBody,而是一个Builder
        FormBody.Builder body = new FormBody.Builder();
        //key   value
        for (String key:parms.keySet()){
            //value的值
            body.add(key,parms.get(key));
        }
        Request request = new Request.Builder()
                .url(url)
                .post(body.build())
                .build();

        client.newCall(request).enqueue(callback);

    }

    //用来上传图片的

    //url  , 图片  ,参数    Callback
    public static  void upImage(String url,File file,String filenName,Map<String,String> params,Callback callback){

        OkHttpClient client = getInstance();

        //requestBody的实现类  Formbody
        MultipartBody.Builder builder = new MultipartBody.Builder();

        if (params!=null){
            for (String key :params.keySet()){
                builder.addFormDataPart(key,params.get(key));
            }
        }

        //设置类型
        builder.setType(MultipartBody.FORM);

        builder.addFormDataPart("file",filenName,RequestBody.create(MediaType.parse("application/octet-stream"),file));

      // builder.setType(MultipartBody.FORM);
     // builder.addFormDataPart("file",filenName,RequestBody.create(MediaType.parse("application/octet-stream"),file));
        //builder.addFormDataPart("file","aa.png",builder.build());

        Request request = new Request.Builder()
                .url(url)
                .post(builder.build())
                .build();

        client.newCall(request).enqueue(callback);
    }
}
8.MyData数据Bean:
package com.example.myshopping.model;
import java.util.List;

public class MyData {
    /**
     * msg : 请求成功
     * code : 0
     * data : [{"bargainPrice":111.99,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":0,"pid":6,"price":7.99,"pscid":1,"salenum":234,"sellerid":22,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":2,"pid":9,"price":78.99,"pscid":1,"salenum":2356,"sellerid":2,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":5,"price":88.99,"pscid":1,"salenum":678,"sellerid":21,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":1,"price":118,"pscid":1,"salenum":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":7,"price":120.01,"pscid":1,"salenum":1266,"sellerid":23,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":23,"price":188,"pscid":1,"salenum":233,"sellerid":16,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":0,"pid":3,"price":198,"pscid":1,"salenum":1234,"sellerid":19,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":16,"price":199,"pscid":1,"salenum":777,"sellerid":9,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":2,"pid":15,"price":233.99,"pscid":1,"salenum":666,"sellerid":8,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"},{"bargainPrice":111.99,"createtime":"2017-10-03T23:43:53","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":0,"pid":12,"price":256,"pscid":1,"salenum":0,"sellerid":5,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}]
     * page : 1
     */

    private String msg;
    private String code;
    private String page;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public String getCode() {
        return code;
    }

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

    public String getPage() {
        return page;
    }

    public void setPage(String page) {
        this.page = page;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        /**
         * bargainPrice : 111.99
         * createtime : 2017-10-03T23:53:28
         * detailUrl : https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends
         * images : https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg
         * itemtype : 0
         * pid : 6
         * price : 7.99
         * pscid : 1
         * salenum : 234
         * sellerid : 22
         * subhead : 每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下
         * title : 北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g
         */

        private double bargainPrice;
        private String createtime;
        private String detailUrl;
        private String images;
        private int itemtype;
        private int pid;
        private double price;
        private int pscid;
        private int salenum;
        private int sellerid;
        private String subhead;
        private String title;

        public double getBargainPrice() {
            return bargainPrice;
        }

        public void setBargainPrice(double bargainPrice) {
            this.bargainPrice = bargainPrice;
        }

        public String getCreatetime() {
            return createtime;
        }

        public void setCreatetime(String createtime) {
            this.createtime = createtime;
        }

        public String getDetailUrl() {
            return detailUrl;
        }

        public void setDetailUrl(String detailUrl) {
            this.detailUrl = detailUrl;
        }

        public String getImages() {
            return images;
        }

        public void setImages(String images) {
            this.images = images;
        }

        public int getItemtype() {
            return itemtype;
        }

        public void setItemtype(int itemtype) {
            this.itemtype = itemtype;
        }

        public int getPid() {
            return pid;
        }

        public void setPid(int pid) {
            this.pid = pid;
        }

        public double getPrice() {
            return price;
        }

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

        public int getPscid() {
            return pscid;
        }

        public void setPscid(int pscid) {
            this.pscid = pscid;
        }

        public int getSalenum() {
            return salenum;
        }

        public void setSalenum(int salenum) {
            this.salenum = salenum;
        }

        public int getSellerid() {
            return sellerid;
        }

        public void setSellerid(int sellerid) {
            this.sellerid = sellerid;
        }

        public String getSubhead() {
            return subhead;
        }

        public void setSubhead(String subhead) {
            this.subhead = subhead;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }
    }
}
9.主布局+条布局:
<?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="com.example.myshopping.view.MainActivity">

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="100px"
       android:orientation="horizontal">

       <TextView
           android:layout_width="0dp"
           android:layout_weight="1"
           android:layout_height="wrap_content"
           android:layout_gravity="center"
           android:gravity="center"
           android:text="《返回"/>
       <ImageView
           android:id="@+id/my_icon"
           android:layout_width="0dp"
           android:layout_weight="1"
           android:layout_height="wrap_content"
           android:layout_gravity="center"
           android:gravity="center"
           android:src="@drawable/icon"/>
       <TextView
           android:layout_width="0dp"
           android:layout_weight="1"
           android:layout_gravity="center"
           android:gravity="center"
           android:layout_height="wrap_content"
           android:text="完成"/>

   </LinearLayout>

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100px"
        android:orientation="horizontal">

        <CheckBox
            android:id="@+id/my_cb"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="全选"/>
        <TextView
            android:id="@+id/my_zj"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:text="总价:"/>
        <TextView
            android:id="@+id/my_js"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_gravity="center"
            android:gravity="center"
            android:layout_height="wrap_content"
            android:text="件数:"/>

    </LinearLayout>

</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"
    android:orientation="vertical">

    <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="150px"
    android:orientation="horizontal"
    android:padding="10px">

    <CheckBox
        android:id="@+id/rcy_cb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"/>

    <ImageView
        android:id="@+id/rcy_img"
        android:layout_width="150px"
        android:layout_height="150px"
        android:src="@mipmap/ic_launcher"
        android:layout_marginLeft="10px"
        android:layout_gravity="center_vertical"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_marginLeft="20px"
        android:paddingTop="20px">


        <TextView
            android:id="@+id/rcy_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="北京稻香村 稻香村中秋节月饼"
            android:layout_marginLeft="20px"/>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginLeft="20px" >

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

            <Button
                android:id="@+id/rcy_jian"
                android:layout_width="50px"
                android:layout_height="wrap_content"
                android:text="-"
                android:layout_marginLeft="20px"/>

            <TextView
                android:id="@+id/rcy_num"
                android:layout_width="50px"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:text="15"/>

            <Button
                android:id="@+id/rcy_add"
                android:layout_width="50px"
                android:layout_height="wrap_content"
                android:text="+"/>

            <ImageView
                android:id="@+id/rcy_delete"
                android:layout_width="50px"
                android:layout_height="50px"
                android:src="@drawable/delete"
                android:layout_marginLeft="20px"
                android:layout_gravity="center_vertical" />

        </LinearLayout>

    </LinearLayout>

</LinearLayout>

</LinearLayout>





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值