您的位置:首页 > 理论基础 > 计算机网络

购物车页面实现 :Okhttp+mvp+RecyclerView(更新)

2018-04-02 21:18 471 查看
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);

//得到解析后的<
4000
em>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层请求数据的方法,将接口url和p层传到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.math.BigDecimal;
import java.util.List;

//实现接口 DataView 和 适配器中MyAdapter.UpdataNum的方法
public class MainActivity extends AppCompatActivity implements DataView,MyAdapter.UpdataNum{

private ImageView my_icon;
private RecyclerView my_rcy;
private CheckBox my_cb;
private TextView my_zj;
private TextView my_js;

int i=0;//用于判断图片的切换
double prices=0.0;//总价
int nums=0;//件数

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

private MyAdapter myAdapter;
private List<MyData.DataBean> list;

//创建Handler
Handler handler = new Handler(){

@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);

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

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

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

//调用适配器中实现接口的方法
myAdapter.Setshopping(MainActivity.this);

}
};

@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层
final MyDataPresenter presenter = new MyDataPresenter(this);

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

//设置全选的点击事件
my_cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(my_cb.isChecked()){

//若选中则为true
for(int i=0;i<list.size();i++){
list.get(i).setCheck(true);
}

//刷新适配器
myAdapter.notifyDataSetChanged();
}else{

//若未选中则为false
for(int i=0;i<list.size();i++){
list.get(i).setCheck(false);
}

//刷新适配器
myAdapter.notifyDataSetChanged();
}

//调用改变总价的方法
CheckPrices();

//调用改变件数的方法
CheckNums();
}
});

}

//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);

}

//实现加数量的方法
@Override
public void addNum(int position) {

//得到当前数量
int num = list.get(position).getSellerid();

//点击时加1
num++;

//将加后的数量设置进Bean中
list.get(position).setSellerid(num);

//刷新适配器
myAdapter.notifyDataSetChanged();

//调用改变总价的方法
CheckPrices();

//调用改变件数的方法
CheckNums();
}

//实现减数量的方法
@Override
public void jianNum(int position) {

//得到当前数量
int num = list.get(position).getSellerid();

//点击时减1
num--;

//将加后的数量设置进Bean中
list.get(position).setSellerid(num);

//刷新适配器
myAdapter.notifyDataSetChanged();

//调用改变总价的方法
CheckPrices();

//调用改变件数的方法
CheckNums();
}

//实现若选中复选框,则修改总价和件数的功能
@Override
public void selectCheck(int position,boolean isCheck) {

//得到bean
MyData.DataBean bean = list.get(position);

//未复选框设置状态
bean.setCheck(isCheck);

//调用改变总价的方法
CheckPrices();

//调用改变件数的方法
CheckNums();

}

//实现删除条目的方法
@Override
public void itemDelete(int position) {
list.remove(position);
}

//定义改变总价的方法
public void CheckPrices(){
//初始化总价为0
prices=0;

for (int a=0;a<list.size();a++){
//得到bean
MyData.DataBean bean = list.get(a);

//判断若选中 总价+=数量*单价
if(bean.getisCheck()){
prices+=list.get(a).getSellerid()*list.get(a).getPrice();
}
}

//将最后的总价进行四舍五入 然后保留小数后2位
BigDecimal bg = new BigDecimal(prices);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

//将总价设置给显示控件
my_zj.setText("总价:"+f1);

}

//定义改变件数的方法
public void CheckNums(){
//初始化数量为0
nums=0;

//循环集合
for(int x = 0;x<list.size();x++){

//得到Bean
MyData.DataBean bean = list.get(x);

//判断复选框是否选中
if(bean.getisCheck()){
nums++;
}
}

//将得到的件数赋值给显示控件
my_js.setText("件数:"+nums);

//刷新适配器
myAdapter.notifyDataSetChanged();
}
}
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, final int position) {

//将系统自带的holder与自定义的MyViewHolder进行绑定
final 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()+"");//数量
myViewHolder.rcy_cb.setChecked(list.get(position).getisCheck());//复选框的状态

//使用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);

//设置监听 实现加的功能
myViewHolder.rcy_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//调用接口中的加方法
updataNum.addNum(position);
}
});

//设置监听 实现减的功能
myViewHolder.rcy_jian.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//调用接口中的减方法
updataNum.jianNum(position);
}
});

//设置监听 实现复选框选择功能
myViewHolder.rcy_cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//调用接口中的全部选中的方法
updataNum.selectCheck(position,myViewHolder.rcy_cb.isChecked());

}
});

//设置监听 实现删除功能
myViewHolder.rcy_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//调用接口中的加方法
updataNum.itemDelete(position);
}
});

}

//条目的数量
@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);

}
}

//创建方法 用于调用接口
UpdataNum updataNum;
public void Setshopping(UpdataNum updataNum){
this.updataNum=updataNum;
}

//创建接口
public interface UpdataNum{

//定义实现减数量、加数量的方法
//参数:1.下标;2.显示数量的控件;3.设置复选框选择状态
void addNum(int position);//加
void jianNum(int position);//减
void selectCheck(int position,boolean isCheck);//若选中复选框,则实现总价和件数的功能
void itemDelete(int position);

}

}
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;

private boolean isCheck;

public boolean getisCheck() {
return isCheck;
}

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

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: