购物车页面实现 :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层请求数据的方法,将接口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.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>
购物车页面实现 :Okhttp+mvp+RecyclerView相关推荐
- 购物车页面实现 :Okhttp+mvp+RecyclerView(更新)
1.清单文件配置请求网络权限: <!--网络请求的权限--> <uses-permission android:name="android.permission.INTER ...
- Fragment购物车页面 (快捷键)
例: shopping_cart_checked shopping_cart_none_check //一Fragment购物车页面 //如果没有数据就换一个 uid (private int uid ...
- Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP
Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP 项目截图 这是我的目录结构 五步使用RxJava+Retrofit2+Okhttp+RxCache 第一步:导包 ...
- 模拟购物车页面全选单选的金额累加
1.前面部分的内容就不过多说明了,就是OkGo请求数据然后封装适配器加入数据源,先上代码 先上适配器的代码,注意这里使用的万能适配器,加入依赖 implementation 'com.github.C ...
- php购物车修改单价,php – woocommerce在结帐和购物车页面更改价格
通过woocommerce,在我的网站中,我想在购物车页面中添加一个选择输入,用户可以在两个选项之间选择一个值,并根据此值我将更改价格. 到目前为止,我可以获得总数并使用此更改它: function ...
- 微信小程序|开发实战篇之十一---商品页面和购物车页面
products页面和cart页面 1.商品页面解构 2.购物车页面解构 1.商品页面解构 修改数量这里使用picker组件: 加入购物车动画,使用css动画中的贝塞尔曲线作为运动速率,从点击起始位置 ...
- 为啥我从后台查到的值在页面显示的是undefined_【java笔记】046天,作购物车页面,学习JavaScript...
今天是学习java 的第46天,今天先是完成了购物车页面的简单制作,然后是开始学习JavaScript的知识. html+css 只是可以实现静态的页面无法实现动态的效果 : 购物车页面的制作: 效果 ...
- 点击加入购物车直接转到购物车页面
有的网站管理员希望自己的网站在顾客点击网站上的商品时,能够直接转到购物车页面进行结账. 1. 安装本插件前建议先安装另一个插件: http://www.mycncart.com/index.php?r ...
- Vue/vant——未登陆时清空购物车以及拦截未登录的状态拒绝进入购物车页面
cart.js // 清空购物车clearCart(state){state.list = [],state.selectAll = []} axios.js "use strict&quo ...
最新文章
- php 4 创建公共的链接数据库php文件并在其它文件引用它
- python时间函数报错_python3中datetime库,time库以及pandas中的时间函数区别与详解...
- 随机蕨(Random Fern)
- 项目经理需要修炼的9件事
- Linux服务源码安装后开机自启动04-php-fpm
- 虚拟机安装中文输入法
- 利用开放定址法实现散列表的创建、插入、删除、查找操作_散列表和IO
- Codeforces 474 C. Captain Marmot
- javascript 创建对象方式
- 外边距合并(HTML、CSS)
- django前后端数据交互
- SpringBoot 之Thymeleaf模板
- 编译自己功能定制的Fedora7内核
- session的保存方式.
- 3DMax 完全重置
- JAVA项目面试总结 电商系统 OA办公系统 P2P网贷
- 工厂模式(包含3种工厂)
- java繁体_Java-汉字繁体拼音转换
- 荒野乱斗好友系统分析
- SX1278、SX1276、SX1262的简单详解