一些依赖
compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.google.code.gson:gson:2.8.2' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'com.android.support:recyclerview-v7:25.3.1' compile 'com.facebook.fresco:fresco:1.5.0' compile 'org.greenrobot:eventbus:3.1.1' compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.youth.banner:banner:1.4.10' compile 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.7' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' compile 'fm.jiecao:jiecaovideoplayer:4.8.3' 清单文件<uses-permission android:name="android.permission.INTERNET"></uses-permission>android:name=".app.MyApplication"<activity android:name=".ZhuActivity"></activity> <activity android:name=".SesondActivity"></activity> <activity android:name=".CarActivity"></activity> <activity android:name=".XiangActivity"></activity> activity_main.xmllayout_adapter.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.facebook.drawee.view.SimpleDraweeView android:layout_gravity="center_horizontal" android:id="@+id/main_sim" android:layout_width="150dp" android:layout_height="150dp" fresco:roundedCornerRadius="150dp" fresco:roundingBorderWidth="1dp" fresco:roundingBorderColor="#000000" fresco:placeholderImage="@mipmap/ic_launcher" /> <EditText android:hint="请输入手机号" android:id="@+id/main_name" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:hint="请输入密码" android:id="@+id/main_pass" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/main_deng" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="登录"/> <Button android:id="@+id/tiao" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="新用户注册"/> </LinearLayout> </LinearLayout>
activity_car.xml<?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:id="@+id/activity_car" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v7.widget.RecyclerView android:id="@+id/recycle" android:layout_width="match_parent" android:layout_weight="1" android:layout_height="wrap_content"/> <LinearLayout android:layout_weight="0" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <CheckBox android:id="@+id/quan" android:layout_weight="0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="全选"/> <LinearLayout android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/liang" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/zong" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="不含运费" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <Button android:text="去支付" android:layout_width="wrap_content" android:layout_weight="0" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
activity_sesond.xml<?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:id="@+id/activity_sesond" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <android.support.v7.widget.RecyclerView android:id="@+id/sesond_recy" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
activity_xiang.xml<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_xiang" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/xiang_sim" android:layout_width="match_parent" android:layout_height="220dp" /> <TextView android:id="@+id/xiang_name" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:textColor="#f00" android:id="@+id/xiang_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/xiang_price" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <Button android:id="@+id/xiang_btn" android:text="添加到购物车" android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content" /> </RelativeLayout>
activity_zhu.xml<?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:id="@+id/activity_zhu" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:hint="请输入手机号" android:id="@+id/zhu_name" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:hint="请输入密码" android:id="@+id/zhu_pass" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:hint="确认密码" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:hint="输入邮箱" android:layout_marginTop="20dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/zhu_btn" android:text="注册" android:layout_width="match_parent" android:layout_height="wrap_content" /> </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="wrap_content" android:orientation="horizontal"> <CheckBox android:id="@+id/shop_check" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/shop_name" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <CheckBox android:layout_weight="0" android:id="@+id/check" android:layout_marginTop="20dp" android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:id="@+id/shop_face" android:layout_width="100dp" android:layout_height="100dp" /> <LinearLayout android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/shop_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/shop_price" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.example.dasd.myapplication.view.PlusView android:id="@+id/plusview" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <Button android:id="@+id/del" android:text="删除" android:layout_weight="0" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
layout_plus.xml<?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="horizontal"> <Button android:id="@+id/plus_lift" android:layout_width="45dp" android:layout_height="45dp" android:background="@drawable/minus2"/> <EditText android:id="@+id/plus_edit" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:id="@+id/plus_right" android:layout_width="45dp" android:layout_height="45dp" android:background="@drawable/plus2"/> </LinearLayout>
layout_recy.xml<?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="horizontal"> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/recy_sim" android:layout_width="100dp" android:layout_height="100dp" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/recy_name" android:textSize="30dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/recy_title" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
MainActivity.javapackage com.example.dasd.myapplication; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.example.dasd.myapplication.bean.DengBean; import com.example.dasd.myapplication.presenter.MyPresenter; import com.facebook.drawee.view.SimpleDraweeView; import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements MyPresenter.DengCallBack{ @BindView(R.id.main_sim) SimpleDraweeView mainSim; @BindView(R.id.main_name) EditText mainName; @BindView(R.id.main_pass) EditText mainPass; @BindView(R.id.main_deng) Button mainDeng; @BindView(R.id.tiao) Button tiao; private MyPresenter myPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); myPresenter = new MyPresenter(this); mainDeng.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name = mainName.getText().toString().trim(); String pass = mainPass.getText().toString().trim(); myPresenter.doDeng(name,pass); } }); tiao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(MainActivity.this,ZhuActivity.class); startActivity(intent); } }); } @Override public void success(DengBean dengBean) { if(dengBean.getMsg().equals("登录成功")){ Toast.makeText(MainActivity.this,dengBean.getMsg(),Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this,SesondActivity.class); startActivity(intent); } } @Override public void failure() { } @Override protected void onDestroy() { super.onDestroy(); myPresenter.xiaohui(); } }
CarActivity.javapackage com.example.dasd.myapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.CheckBox; import android.widget.TextView; import com.example.dasd.myapplication.adapter.MyAdapter; import com.example.dasd.myapplication.bean.XinBean; import com.example.dasd.myapplication.okhttp.AbstractUiCallBack; import com.example.dasd.myapplication.okhttp.OkhttpUtils; import com.example.dasd.myapplication.presenter.MyPresenter; import butterknife.BindView; import butterknife.ButterKnife; public class CarActivity extends AppCompatActivity implements MyPresenter.PCarCallBack{ @BindView(R.id.recycle) RecyclerView recycle; @BindView(R.id.quan) CheckBox quan; @BindView(R.id.liang) TextView liang; @BindView(R.id.zong) TextView zong; private MyAdapter myAdapter; private LinearLayoutManager manager; private MyPresenter myPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_car); ButterKnife.bind(this); myPresenter = new MyPresenter(this); //myPresenter.getCar(); myAdapter = new MyAdapter(CarActivity.this); manager = new LinearLayoutManager(CarActivity.this,LinearLayoutManager.VERTICAL,false); myAdapter.setListener(new MyAdapter.UpdateUiListener() { @Override public void setTotal(String total, String num, boolean allcheck) { zong.setText(total); liang.setText(num); quan.setChecked(allcheck); } }); quan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { myAdapter.selectAll(quan.isChecked()); } }); OkhttpUtils.getInstance().asy(null, "http://120.27.23.105/product/getCarts?uid=3839", new AbstractUiCallBack<XinBean>() { @Override public void success(XinBean xinBean) { myAdapter.add(xinBean); recycle.setLayoutManager(manager); recycle.setAdapter(myAdapter); } @Override public void failure(Exception e) { } }); } @Override public void success(XinBean xinBean) { myAdapter.add(xinBean); recycle.setLayoutManager(manager); recycle.setAdapter(myAdapter); } @Override public void failure() { } @Override protected void onDestroy() { super.onDestroy(); myPresenter.xiaohui(); } }adapter 类SesondActivity.javapackage com.example.dasd.myapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import com.example.dasd.myapplication.adapter.RecyAdapter; import com.example.dasd.myapplication.bean.XiangBean; import com.example.dasd.myapplication.presenter.MyPresenter; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class SesondActivity extends AppCompatActivity implements MyPresenter.PXinCallBack{ @BindView(R.id.sesond_recy) RecyclerView sesondRecy; private LinearLayoutManager manager; private MyPresenter myPresenter; private RecyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sesond); ButterKnife.bind(this); myPresenter = new MyPresenter(this); myPresenter.getXin(); } @Override public void success(XiangBean xiangBean) { manager = new LinearLayoutManager(SesondActivity.this,LinearLayoutManager.VERTICAL,false); List<XiangBean.DataBean> data = xiangBean.getData(); adapter = new RecyAdapter(SesondActivity.this,data); sesondRecy.setLayoutManager(manager); sesondRecy.setAdapter(adapter); } @Override public void failure() { } @Override protected void onDestroy() { super.onDestroy(); myPresenter.xiaohui(); } }XiangActivity.javapackage com.example.dasd.myapplication; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import com.example.dasd.myapplication.bean.EeBean; import com.example.dasd.myapplication.bean.JiaBean; import com.example.dasd.myapplication.okhttp.AbstractUiCallBack; import com.example.dasd.myapplication.okhttp.OkhttpUtils; import com.facebook.drawee.view.SimpleDraweeView; import butterknife.BindView; import butterknife.ButterKnife; public class XiangActivity extends AppCompatActivity { @BindView(R.id.xiang_sim) SimpleDraweeView xiangSim; @BindView(R.id.xiang_name) TextView xiangName; @BindView(R.id.xiang_title) TextView xiangTitle; @BindView(R.id.xiang_price) TextView xiangPrice; @BindView(R.id.xiang_btn) Button xiangBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xiang); ButterKnife.bind(this); Intent intent = getIntent(); final int pid = intent.getIntExtra("pid", 0); Toast.makeText(XiangActivity.this, pid + "", Toast.LENGTH_SHORT).show(); OkhttpUtils.getInstance().asy(null, "http://120.27.23.105/product/getProductDetail?pid="+pid, new AbstractUiCallBack<EeBean>() { @Override public void success(EeBean eeBean) { xiangName.setText(eeBean.getSeller().getName()); xiangTitle.setText(eeBean.getData().getTitle()); xiangPrice.setText("价格是:¥"+eeBean.getData().getPrice()); String[] split = eeBean.getData().getImages().split("\\|"); xiangSim.setImageURI(split[0]); } @Override public void failure(Exception e) { } }); xiangBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { OkhttpUtils.getInstance().asy(null, "http://120.27.23.105/product/addCart?uid=3839&pid=" + pid, new AbstractUiCallBack<JiaBean>() { @Override public void success(JiaBean jiaBean) { Toast.makeText(XiangActivity.this,"加购成功",Toast.LENGTH_SHORT).show(); Intent intent1 = new Intent(XiangActivity.this,CarActivity.class); startActivity(intent1); } @Override public void failure(Exception e) { } }); } }); } }ZhuActivity.javapackage com.example.dasd.myapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.example.dasd.myapplication.bean.ZhuBean; import com.example.dasd.myapplication.presenter.MyPresenter; import butterknife.BindView; import butterknife.ButterKnife; public class ZhuActivity extends AppCompatActivity implements MyPresenter.ZhuCallBack{ @BindView(R.id.zhu_name) EditText zhuName; @BindView(R.id.zhu_pass) EditText zhuPass; @BindView(R.id.zhu_btn) Button zhuBtn; private MyPresenter myPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zhu); ButterKnife.bind(this); myPresenter = new MyPresenter(this); zhuBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String name = zhuName.getText().toString().trim(); String pass = zhuPass.getText().toString().trim(); myPresenter.doZhu(name,pass); } }); } @Override public void success(ZhuBean zhuBean) { if(zhuBean.getMsg().equals("注册成功")){ Toast.makeText(ZhuActivity.this,zhuBean.getMsg(),Toast.LENGTH_SHORT).show(); finish(); } } @Override public void failure() { } @Override protected void onDestroy() { super.onDestroy(); myPresenter.xiaohui(); } }MyAdapter.javapackage com.example.dasd.myapplication.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 android.widget.Toast; import com.example.dasd.myapplication.R; import com.example.dasd.myapplication.bean.DelBean; import com.example.dasd.myapplication.bean.XinBean; import com.example.dasd.myapplication.okhttp.AbstractUiCallBack; import com.example.dasd.myapplication.okhttp.OkhttpUtils; import com.example.dasd.myapplication.view.PlusView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.Hashtable; import java.util.List; import java.util.Map; /** * Created by d on 2017/12/21. */ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{ Context context; private List<String> ImageList = new ArrayList<>(); private List<XinBean.DataBean.ListBean> list; Map<String,String> map = new Hashtable<>(); public MyAdapter(Context context) { this.context = context; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.layout_adapter, null); return new ViewHolder(view); } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { if(list.get(position).getIsFrist() == 1){ //显示商家 holder.shop_check.setVisibility(View.VISIBLE); holder.shop_name.setVisibility(View.VISIBLE); holder.shop_check.setChecked(list.get(position).isShopSelected()); // 显示商家的名称 // list.get(position).getSellerid() 取到商家的id // map.get()取到 商家的名称 holder.shop_name.setText(map.get(String.valueOf(list.get(position).getSellerid()))); } else { holder.shop_check.setVisibility(View.GONE); holder.shop_name.setVisibility(View.GONE); } holder.shop_title.setText(list.get(position).getTitle()); holder.shop_price.setText(list.get(position).getPrice()+""); holder.check.setChecked(list.get(position).isItemSelected()); String images = list.get(position).getImages(); String[] split = images.split("\\|"); for(int i = 0;i<split.length;i++){ ImageList.add(split[i]); } ImageLoader.getInstance().displayImage(ImageList.get(position),holder.shop_face); holder.plusview.setEditView(list.get(position).getNum()); holder.del.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int pid = list.get(position).getPid(); OkhttpUtils.getInstance().asy(null, "http://120.27.23.105/product/deleteCart?uid=3839&pid=" + pid, new AbstractUiCallBack<DelBean>() { @Override public void success(DelBean delBean) { Toast.makeText(context,"删除成功",Toast.LENGTH_SHORT).show(); } @Override public void failure(Exception e) { } }); list.remove(position); setFirst(list); notifyDataSetChanged(); sum(list); } }); holder.check.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { list.get(position).setItemSelected(holder.check.isChecked()); for(int i = 0;i<list.size();i++){ for(int j = 0;j<list.size();j++){ if(list.get(i).getSellerid() == list.get(j).getSellerid() && !list.get(j).isItemSelected()){ list.get(i).setShopSelected(false); break; } else{ list.get(i).setShopSelected(true); } } } notifyDataSetChanged(); sum(list); } }); holder.plusview.setLinsenter(new PlusView.ClickLisenter() { @Override public void click(int count) { list.get(position).setNum(count); notifyDataSetChanged(); sum(list); } }); holder.shop_check.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { list.get(position).setShopSelected(holder.shop_check.isChecked()); for(int i=0; i<list.size();i++){ if(list.get(position).getSellerid()==list.get(i).getSellerid()){ list.get(i).setItemSelected(holder.shop_check.isChecked()); } } notifyDataSetChanged(); sum(list); } }); } public void sum(List<XinBean.DataBean.ListBean> list){ int totalNum = 0; float totalMoney = 0.0f; boolean allcheck = true; for(int i = 0; i <list.size(); i++){ if(list.get(i).isItemSelected()){ totalNum += list.get(i).getNum(); totalMoney += list.get(i).getPrice()*list.get(i).getNum(); } else{ allcheck = false; } } listener.setTotal(totalMoney+"",totalNum+"",allcheck); } public void setFirst(List<XinBean.DataBean.ListBean> list){ if(list.size()>0){ list.get(0).setIsFrist(1); for(int i = 1;i<list.size();i++){ if(list.get(i).getSellerid()==list.get(i-1).getSellerid()){ list.get(i).setIsFrist(2); } else{ list.get(i).setIsFrist(1); } } } } @Override public int getItemCount() { return list==null ? 0 : list.size(); } public void add(XinBean xinBean) { if(list==null){ list = new ArrayList<>(); } for(XinBean.DataBean shop:xinBean.getData()){ map.put(shop.getSellerid(),shop.getSellerName()); for(int i = 0; i<shop.getList().size();i++){ list.add(shop.getList().get(i)); } } setFirst(list); notifyDataSetChanged(); } public void selectAll(boolean checked) { for(int i = 0;i<list.size();i++){ list.get(i).setShopSelected(checked); list.get(i).setItemSelected(checked); } notifyDataSetChanged(); sum(list); } static class ViewHolder extends RecyclerView.ViewHolder{ private final CheckBox shop_check; private final ImageView shop_face; private final TextView shop_name; private final TextView shop_price; private final TextView shop_title; private final PlusView plusview; private final CheckBox check; private final Button del; public ViewHolder(View itemView) { super(itemView); shop_check = (CheckBox) itemView.findViewById(R.id.shop_check); shop_face = (ImageView) itemView.findViewById(R.id.shop_face); shop_name = (TextView) itemView.findViewById(R.id.shop_name); shop_price = (TextView) itemView.findViewById(R.id.shop_price); shop_title = (TextView) itemView.findViewById(R.id.shop_title); plusview = (PlusView) itemView.findViewById(R.id.plusview); check = (CheckBox) itemView.findViewById(R.id.check); del = (Button) itemView.findViewById(R.id.del); } } UpdateUiListener listener; public void setListener(UpdateUiListener listener){ this.listener = listener; } public interface UpdateUiListener{ public void setTotal(String total, String num, boolean allcheck); } }
adapter类RecyAdapter.javaapp包package com.example.dasd.myapplication.adapter; import android.content.Context; import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.dasd.myapplication.R; import com.example.dasd.myapplication.XiangActivity; import com.example.dasd.myapplication.bean.XiangBean; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; /** * Created by d on 2017/12/21. */ public class RecyAdapter extends RecyclerView.Adapter<RecyAdapter.IViewHolder>{ Context context; List<XiangBean.DataBean> data; public RecyAdapter(Context context, List<XiangBean.DataBean> data) { this.context = context; this.data = data; } @Override public IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.layout_recy, null); return new IViewHolder(view); } @Override public void onBindViewHolder(IViewHolder holder, final int position) { holder.recy_name.setText(data.get(position).getPid()+""); holder.recy_title.setText(data.get(position).getTitle()); String[] split = data.get(position).getImages().split("\\|"); holder.simpleDraweeView.setImageURI(split[0]); holder.recy_title.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int pid = data.get(position).getPid(); Intent intent = new Intent(context, XiangActivity.class); intent.putExtra("pid",pid); context.startActivity(intent); } }); } @Override public int getItemCount() { return data==null ? 0 : data.size(); } static class IViewHolder extends RecyclerView.ViewHolder{ private final TextView recy_name; private final TextView recy_title; private final SimpleDraweeView simpleDraweeView; public IViewHolder(View itemView) { super(itemView); recy_name = (TextView) itemView.findViewById(R.id.recy_name); recy_title = (TextView) itemView.findViewById(R.id.recy_title); simpleDraweeView = (SimpleDraweeView) itemView.findViewById(R.id.recy_sim); } } }MyApplication.javabean包package com.example.dasd.myapplication.app; import android.app.Application; import com.example.dasd.myapplication.jiekou.DoGitModel; import com.example.dasd.myapplication.okhttp.Okhttp; import com.facebook.drawee.backends.pipeline.Fresco; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; /** * Created by d on 2017/12/21. */ public class MyApplication extends Application{ public static DoGitModel doGitModel; @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(configuration); Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://120.27.23.105") .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .client(Okhttp.getinstaince()) .build(); doGitModel = retrofit.create(DoGitModel.class); } }DelBean.java
package com.example.dasd.myapplication.bean; /** * Created by d on 2017/12/21. */ public class DelBean { /** * msg : 删除购物车成功 * code : 0 */ private String msg; private String code; 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; } }DengBean.javapackage com.example.dasd.myapplication.bean; /** * Created by d on 2017/12/21. */ public class DengBean { /** * msg : 登录成功 * code : 0 * data : {"age":null,"appkey":"7307f2c2f372acaf","appsecret":"0B598BF9CBFEDE9284D22701B8C943DA","createtime":"2017-12-21T13:53:01","email":null,"fans":null,"follow":null,"gender":null,"icon":null,"latitude":null,"longitude":null,"mobile":"13555025485","money":null,"nickname":null,"password":"29B2504F76D2E9C177B4A8D2263921B9","praiseNum":null,"token":"0B6C8E548C65855B5B425113772361C8","uid":3839,"userId":null,"username":"13555025485"} */ private String msg; private String code; private 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 DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class DataBean { /** * age : null * appkey : 7307f2c2f372acaf * appsecret : 0B598BF9CBFEDE9284D22701B8C943DA * createtime : 2017-12-21T13:53:01 * email : null * fans : null * follow : null * gender : null * icon : null * latitude : null * longitude : null * mobile : 13555025485 * money : null * nickname : null * password : 29B2504F76D2E9C177B4A8D2263921B9 * praiseNum : null * token : 0B6C8E548C65855B5B425113772361C8 * uid : 3839 * userId : null * username : 13555025485 */ private Object age; private String appkey; private String appsecret; private String createtime; private Object email; private Object fans; private Object follow; private Object gender; private Object icon; private Object latitude; private Object longitude; private String mobile; private Object money; private Object nickname; private String password; private Object praiseNum; private String token; private int uid; private Object userId; private String username; public Object getAge() { return age; } public void setAge(Object age) { this.age = age; } public String getAppkey() { return appkey; } public void setAppkey(String appkey) { this.appkey = appkey; } public String getAppsecret() { return appsecret; } public void setAppsecret(String appsecret) { this.appsecret = appsecret; } public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } public Object getEmail() { return email; } public void setEmail(Object email) { this.email = email; } public Object getFans() { return fans; } public void setFans(Object fans) { this.fans = fans; } public Object getFollow() { return follow; } public void setFollow(Object follow) { this.follow = follow; } public Object getGender() { return gender; } public void setGender(Object gender) { this.gender = gender; } public Object getIcon() { return icon; } public void setIcon(Object icon) { this.icon = icon; } public Object getLatitude() { return latitude; } public void setLatitude(Object latitude) { this.latitude = latitude; } public Object getLongitude() { return longitude; } public void setLongitude(Object longitude) { this.longitude = longitude; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public Object getMoney() { return money; } public void setMoney(Object money) { this.money = money; } public Object getNickname() { return nickname; } public void setNickname(Object nickname) { this.nickname = nickname; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Object getPraiseNum() { return praiseNum; } public void setPraiseNum(Object praiseNum) { this.praiseNum = praiseNum; } public String getToken() { return token; } public void setToken(String token) { this.token = token; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public Object getUserId() { return userId; } public void setUserId(Object userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } } }EeBean.javapackage com.example.dasd.myapplication.bean; /** * Created by d on 2017/12/21. */ public class EeBean { /** * msg : * seller : {"description":"我是商家21","icon":"http://120.27.23.105/images/icon.png","name":"商家21","productNums":999,"score":5,"sellerid":21} * code : 0 * data : {"bargainPrice":11800,"createtime":"2017-10-14T21:48:08","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":2,"pid":77,"price":38999.99,"pscid":40,"salenum":7757,"sellerid":21,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"} */ private String msg; private SellerBean seller; private String code; private DataBean data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public SellerBean getSeller() { return seller; } public void setSeller(SellerBean seller) { this.seller = seller; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class SellerBean { /** * description : 我是商家21 * icon : http://120.27.23.105/images/icon.png * name : 商家21 * productNums : 999 * score : 5.0 * sellerid : 21 */ private String description; private String icon; private String name; private int productNums; private double score; private int sellerid; public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getProductNums() { return productNums; } public void setProductNums(int productNums) { this.productNums = productNums; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public int getSellerid() { return sellerid; } public void setSellerid(int sellerid) { this.sellerid = sellerid; } } public static class DataBean { /** * bargainPrice : 11800.0 * createtime : 2017-10-14T21:48:08 * detailUrl : https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1 * images : https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg * itemtype : 2 * pid : 77 * price : 38999.99 * pscid : 40 * salenum : 7757 * sellerid : 21 * subhead : 购买电脑办公部分商品满1元返火车票5元优惠券(返完即止) * title : 全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G */ 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; } } }JiaBean.javapackage com.example.dasd.myapplication.bean; /** * Created by d on 2017/12/21. */ public class JiaBean { /** * msg : 加购成功 * code : 0 */ private String msg; private String code; 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; } }XiangBean.java
package com.example.dasd.myapplication.bean; import java.util.List; /** * Created by d on 2017/12/21. */ public class XiangBean { /** * msg : 查询成功 * code : 0 * data : [{"bargainPrice":11800,"createtime":"2017-10-10T17:33:37","detailUrl":"https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg","itemtype":0,"pid":57,"price":5199,"pscid":40,"salenum":4343,"sellerid":1,"subhead":"【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统","title":"小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银\r\n"},{"bargainPrice":11800,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/5025518.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t8830/106/1760940277/195595/5cf9412f/59bf2ef5N5ab7dc16.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5428/70/1520969931/274676/b644dd0d/591128e7Nd2f70da0.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5566/365/1519564203/36911/620c750c/591128eaN54ac3363.jpg!q70.jpg","itemtype":1,"pid":58,"price":6399,"pscid":40,"salenum":545,"sellerid":2,"subhead":"升级4G大显存!Nvme协议Pcie SSD,速度快人一步】GTX1050Ti就选拯救者!专业游戏键盘&新模具全新设计!","title":"联想(Lenovo)拯救者R720 15.6英寸游戏笔记本电脑(i5-7300HQ 8G 1T+128G SSD GTX1050Ti 4G IPS 黑)"},{"bargainPrice":5599,"createtime":"2017-10-10T17:30:32","detailUrl":"https://item.m.jd.com/product/4824715.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n12/jfs/t7768/184/1153704394/148460/f42e1432/599a930fN8a85626b.jpg!q70.jpg","itemtype":0,"pid":59,"price":5599,"pscid":40,"salenum":675,"sellerid":3,"subhead":"游戏本选择4G独显,拒绝掉帧】升级版IPS全高清防眩光显示屏,WASD方向键颜色加持,三大出风口立体散热!","title":"戴尔DELL灵越游匣15PR-6648B GTX1050 15.6英寸游戏笔记本电脑(i5-7300HQ 8G 128GSSD+1T 4G独显 IPS)黑"},{"bargainPrice":11800,"createtime":"2017-10-14T21:48:08","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":2,"pid":60,"price":13888,"pscid":40,"salenum":466,"sellerid":4,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-14T21:38:26","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":1,"pid":61,"price":14999,"pscid":40,"salenum":5535,"sellerid":5,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-03T23:53:28","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":0,"pid":62,"price":15999,"pscid":40,"salenum":43,"sellerid":6,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-14T21:38:26","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":1,"pid":63,"price":10000,"pscid":40,"salenum":3232,"sellerid":7,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-03T23:43:53","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":0,"pid":64,"price":11000,"pscid":40,"salenum":0,"sellerid":8,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-14T21:48:08","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":2,"pid":65,"price":12000,"pscid":40,"salenum":868,"sellerid":9,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"},{"bargainPrice":11800,"createtime":"2017-10-14T21:38:26","detailUrl":"https://mitem.jd.hk/ware/view.action?wareId=1988853309&cachekey=1acb07a701ece8d2434a6ae7fa6870a1","images":"https://m.360buyimg.com/n0/jfs/t6130/97/1370670410/180682/1109582a/593276b1Nd81fe723.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5698/110/2617517836/202970/c9388feb/593276b7Nbd94ef1f.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5815/178/2614671118/51656/7f52d137/593276c7N107b725a.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5878/60/2557817477/30873/4502b606/593276caN5a7d6357.jpg!q70.jpg","itemtype":1,"pid":66,"price":13000,"pscid":40,"salenum":7676,"sellerid":10,"subhead":"购买电脑办公部分商品满1元返火车票5元优惠券(返完即止)","title":"全球购 新款Apple MacBook Pro 苹果笔记本电脑 银色VP2新13英寸Bar i5/8G/256G"}] * 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 : 11800.0 * createtime : 2017-10-10T17:33:37 * detailUrl : https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends * images : https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg * itemtype : 0 * pid : 57 * price : 5199.0 * pscid : 40 * salenum : 4343 * sellerid : 1 * subhead : 【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统 * title : 小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银 */ 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; } } }XinBean.javapackage com.example.dasd.myapplication.bean; import java.util.List; /** * Created by d on 2017/12/21. */ public class XinBean { /** * msg : 请求成功 * code : 0 * data : [{},{"list":[{"bargainPrice":99,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg","num":1,"pid":45,"price":2999,"pscid":39,"selected":0,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机"}],"sellerName":"商家1","sellerid":"1"},{"list":[{"bargainPrice":1599,"createtime":"2017-10-14T21:48:08","detailUrl":"https://item.m.jd.com/product/1993026402.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t5863/302/8961270302/97126/41feade1/5981c81cNc1b1fbef.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7003/250/1488538438/195825/53bf31ba/5981c57eN51e95176.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t5665/100/8954482513/43454/418611a9/5981c57eNd5fc97ba.jpg!q70.jpg","num":1,"pid":47,"price":111,"pscid":39,"selected":0,"sellerid":3,"subhead":"碳黑色 32GB 全网通 官方标配 1件","title":"锤子 坚果Pro 特别版 巧克力色 酒红色 全网通 移动联通电信4G手机 双卡双待 碳黑色 32GB 全网通"}],"sellerName":"商家3","sellerid":"3"},{"list":[{"bargainPrice":3455,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/12224420750.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t9106/106/1785172479/537280/253bc0ab/59bf78a7N057e5ff7.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8461/5/1492479653/68388/7255e013/59ba5e84N91091843.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t8803/356/1478945529/489755/2a163ace/59ba5e84N7bb9a666.jpg!q70.jpg","num":1,"pid":55,"price":5999,"pscid":39,"selected":0,"sellerid":11,"subhead":"【现货新品抢购】全面屏2.0震撼来袭,骁龙835处理器,四曲面陶瓷机","title":"小米(MI) 小米MIX2 手机 黑色 全网通 (6GB+64GB)【标配版】"}],"sellerName":"商家11","sellerid":"11"}] */ private String msg; private String code; 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 List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } public static class DataBean { /** * list : [{"bargainPrice":99,"createtime":"2017-10-14T21:38:26","detailUrl":"https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg","num":1,"pid":45,"price":2999,"pscid":39,"selected":0,"sellerid":1,"subhead":"高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽!","title":"一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机"}] * sellerName : 商家1 * sellerid : 1 */ private String sellerName; private String sellerid; private List<ListBean> list; public String getSellerName() { return sellerName; } public void setSellerName(String sellerName) { this.sellerName = sellerName; } public String getSellerid() { return sellerid; } public void setSellerid(String sellerid) { this.sellerid = sellerid; } public List<ListBean> getList() { return list; } public void setList(List<ListBean> list) { this.list = list; } public static class ListBean { /** * bargainPrice : 99.0 * createtime : 2017-10-14T21:38:26 * detailUrl : https://item.m.jd.com/product/4345173.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends * images : https://m.360buyimg.com/n0/jfs/t6037/35/2944615848/95178/6cd6cff0/594a3a10Na4ec7f39.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6607/258/1025744923/75738/da120a2d/594a3a12Ne3e6bc56.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t6370/292/1057025420/64655/f87644e3/594a3a12N5b900606.jpg!q70.jpg * num : 1 * pid : 45 * price : 2999.0 * pscid : 39 * selected : 0 * sellerid : 1 * subhead : 高清双摄,就是清晰!2000+1600万高清摄像头,6GB大内存+高通骁龙835处理器,性能怪兽! * title : 一加手机5 (A5000) 6GB+64GB 月岩灰 全网通 双卡双待 移动联通电信4G手机 */ private double bargainPrice; private String createtime; private String detailUrl; private String images; private int num; private int pid; private double price; private int pscid; private int selected; private int sellerid; private String subhead; private String title; private int isFrist; //是否选中商家 public boolean shopSelected; //商家多选是否选中 public boolean itemSelected; //条目多选是否选中 public int getIsFrist() { return isFrist; } public void setIsFrist(int isFrist) { this.isFrist = isFrist; } public boolean isShopSelected() { return shopSelected; } public void setShopSelected(boolean shopSelected) { this.shopSelected = shopSelected; } public boolean isItemSelected() { return itemSelected; } public void setItemSelected(boolean itemSelected) { this.itemSelected = itemSelected; } 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 getNum() { return num; } public void setNum(int num) { this.num = num; } 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 getSelected() { return selected; } public void setSelected(int selected) { this.selected = selected; } 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; } } } }ZhuBean.java
package com.example.dasd.myapplication.bean; /** * Created by d on 2017/12/21. */ public class ZhuBean { /** * msg : 注册成功 * code : 0 */ private String msg; private String code; 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; } }新建一个包 jiekou新建这个接口DoGitModelpackage com.example.dasd.myapplication.jiekou; import com.example.dasd.myapplication.bean.DengBean; import com.example.dasd.myapplication.bean.XiangBean; import com.example.dasd.myapplication.bean.XinBean; import com.example.dasd.myapplication.bean.ZhuBean; import java.util.Map; import io.reactivex.Observable; import retrofit2.http.GET; import retrofit2.http.QueryMap; /** * Created by d on 2017/12/21. */ public interface DoGitModel { @GET("/user/login") Observable<DengBean> gitDeng(@QueryMap Map<String, String> map); @GET("/user/reg") Observable<ZhuBean> gitDZhu(@QueryMap Map<String, String> map); @GET("/product/getCarts") Observable<XinBean> gitXin(@QueryMap Map<String, String> map); @GET("/product/searchProducts") Observable<XiangBean> gitXiang(@QueryMap Map<String, String> map); }
新建一个model包MyModel.java新建一个okhttp包package com.example.dasd.myapplication.model; import com.example.dasd.myapplication.app.MyApplication; import com.example.dasd.myapplication.bean.DengBean; import com.example.dasd.myapplication.bean.XiangBean; import com.example.dasd.myapplication.bean.XinBean; import com.example.dasd.myapplication.bean.ZhuBean; import java.util.Hashtable; import java.util.Map; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.functions.Consumer; import io.reactivex.schedulers.Schedulers; /** * Created by d on 2017/12/21. */ public class MyModel { public void doDeng(String name, String pass, final MDengCallBack mDengCallBack){ Map<String,String> map = new Hashtable<>(); map.put("mobile",name); map.put("password",pass); MyApplication.doGitModel.gitDeng(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<DengBean>() { @Override public void accept(DengBean dengBean) throws Exception { mDengCallBack.success(dengBean); } }); } public void doZhu(String name, String pass, final MZhuCallBack mZhuCallBack){ Map<String,String> map = new Hashtable<>(); map.put("mobile",name); map.put("password",pass); MyApplication.doGitModel.gitDZhu(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<ZhuBean>() { @Override public void accept(ZhuBean zhuBean) throws Exception { mZhuCallBack.success(zhuBean); } }); } public void getXin(final MXinCallBack mXinCallBack){ Map<String,String> map = new Hashtable<>(); map.put("keywords","笔记本"); map.put("page","1"); MyApplication.doGitModel.gitXiang(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<XiangBean>() { @Override public void accept(XiangBean xiangBean) throws Exception { mXinCallBack.success(xiangBean); } }); } public void getCar(final MCarCallBack carCallBack){ Map<String,String> map = new Hashtable<>(); map.put("uid","3839"); MyApplication.doGitModel.gitXin(map) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<XinBean>() { @Override public void accept(XinBean xinBean) throws Exception { carCallBack.success(xinBean); } }); } public interface MDengCallBack{ public void success(DengBean dengBean); public void failure(); } public interface MZhuCallBack{ public void success(ZhuBean zhuBean); public void failure(); } public interface MXinCallBack{ public void success(XiangBean xiangBean); public void failure(); } public interface MCarCallBack{ public void success(XinBean xinBean); public void failure(); } }
AbstractUiCallBack.javaokhttp包下package com.example.dasd.myapplication.okhttp; import android.os.Handler; import android.os.Looper; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; import java.io.IOException; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; /** * Created by muhanxi on 17/11/10. * * * Okhttp 单例 范型的封装 */ public abstract class AbstractUiCallBack<T> implements Callback { /** * 成功回调 * @param t */ public abstract void success(T t); /** * 失败回调 * @param e */ public abstract void failure(Exception e); private Handler handler = null ; private Class clazz ; public AbstractUiCallBack(){ handler = new Handler(Looper.getMainLooper()); // 得到的是一个 AbstractUiCallBack<T> 的Type Type type = getClass().getGenericSuperclass() ; // 得到的是T的实际Type Type [] arr = ((ParameterizedType)type).getActualTypeArguments() ; clazz = (Class) arr[0] ; } @Override public void onFailure(Call call, IOException e) { failure(e); } @Override public void onResponse(Call call, Response response) throws IOException { try { String result = response.body().string(); System.out.println("result = " + result); Gson gson = new Gson(); final T t = (T) gson.fromJson(result,clazz); handler.post(new Runnable() { @Override public void run() { success(t); } }); } catch (IOException e) { e.printStackTrace(); failure(e); } catch (JsonSyntaxException e) { e.printStackTrace(); failure(e); } } }LoggingInterceptor.javaookhttp包下package com.example.dasd.myapplication.okhttp; import java.io.IOException; import okhttp3.FormBody; import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /** * 可以实现 添加公共请求参数 */ public class LoggingInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { //首先取到Request Request request = chain.request(); Response response = null; Request requestProcess = null ; if("GET".equals(request.method())){ String url = request.url().toString() + "&source=android"; Request.Builder builder = request.newBuilder() ; builder.get().url(url); requestProcess = builder.build(); response = chain.proceed(requestProcess); } else { FormBody.Builder builder = new FormBody.Builder() ; RequestBody requestBody = request.body() ; if(requestBody instanceof FormBody){ FormBody formBody = (FormBody)requestBody ; for (int i=0;i<formBody.size();i++){ builder.add(formBody.encodedName(i),formBody.encodedValue(i)); } builder.add("source","android"); } requestProcess = request.newBuilder().url(request.url().toString()).post(builder.build()).build() ; response = chain.proceed(requestProcess); } return response; } }Okhttp.javaokhttp包下package com.example.dasd.myapplication.okhttp; import okhttp3.OkHttpClient; /** * Created by d on 2017/12/21. */ public class Okhttp { private static OkHttpClient client = null; public static OkHttpClient getinstaince(){ if(client==null){ synchronized (Okhttp.class){ if(client==null){ client = new OkHttpClient.Builder().build(); } } } return client; } }OkhttpUtils.javapackage com.example.dasd.myapplication.okhttp; import java.io.File; import java.util.Map; import java.util.concurrent.TimeUnit; import okhttp3.FormBody; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; /** * Created by muhanxi on 17/11/10. * * * Okhttp 单例 范型的封装 */ public class OkhttpUtils { private static OkhttpUtils okhttpUtils = null ; private OkhttpUtils(){ } public static OkhttpUtils getInstance(){ if(okhttpUtils == null){ okhttpUtils = new OkhttpUtils(); client = new OkHttpClient.Builder() .readTimeout(20, TimeUnit.SECONDS) .writeTimeout(20,TimeUnit.SECONDS) .connectTimeout(20,TimeUnit.SECONDS) //添加拦截器 .addInterceptor(new LoggingInterceptor()) .build(); } return okhttpUtils ; } private static OkHttpClient client ; /** * 发起异步请求 * @param params * @param url * @param callBack */ public void asy(Map<String,String> params,String url,AbstractUiCallBack callBack){ Request request = null ; if(params != null){ // post 请求 FormBody.Builder builder = new FormBody.Builder() ; for(Map.Entry<String,String> entry : params.entrySet()){ builder.add(entry.getKey(),entry.getValue()); } FormBody body = builder.build(); request = new Request.Builder() .url(url) .post(body) .build(); } else { // get 请求 request = new Request.Builder() .url(url) .build(); } client.newCall(request).enqueue(callBack); } private static final MediaType MEDIA_TYPE_PNG = MediaType.parse("image/png"); public static void postFile(Map<String,String> map, String url, File file,AbstractUiCallBack callBack){ String [] array = file.getAbsolutePath().split("\\/"); MultipartBody.Builder builder = new MultipartBody.Builder(); builder.setType(MultipartBody.FORM); for(Map.Entry<String,String> entry : map.entrySet()){ builder.addFormDataPart(entry.getKey(),entry.getValue()); } builder.addFormDataPart("imageFileName",array[array.length-1]); if(file.exists() && file.length() > 0){ builder.addFormDataPart("image",array[array.length-1], RequestBody.create(MEDIA_TYPE_PNG,file)); } MultipartBody body = builder.build() ; Request request = new Request.Builder() .url(url) .post(body) .build(); client.newCall(request).enqueue(callBack); } } presenteer包MyPresenter.javaview包package com.example.dasd.myapplication.presenter; import com.example.dasd.myapplication.bean.DengBean; import com.example.dasd.myapplication.bean.XiangBean; import com.example.dasd.myapplication.bean.XinBean; import com.example.dasd.myapplication.bean.ZhuBean; import com.example.dasd.myapplication.model.MyModel; /** * Created by d on 2017/12/21. */ public class MyPresenter { DengCallBack dengCallBack; public MyPresenter(DengCallBack dengCallBack){ this.dengCallBack = dengCallBack; } ZhuCallBack zhuCallBack; public MyPresenter(ZhuCallBack zhuCallBack){ this.zhuCallBack = zhuCallBack; } PXinCallBack pXinCallBack; public MyPresenter(PXinCallBack pXinCallBack){ this.pXinCallBack = pXinCallBack; } PCarCallBack carCallBack; public MyPresenter(PCarCallBack carCallBack){ this.carCallBack = carCallBack; } MyModel myModel = new MyModel(); public void doDeng(String name,String pass){ myModel.doDeng(name, pass, new MyModel.MDengCallBack() { @Override public void success(DengBean dengBean) { dengCallBack.success(dengBean); } @Override public void failure() { } }); } public void doZhu(String name,String pass){ myModel.doZhu(name, pass, new MyModel.MZhuCallBack() { @Override public void success(ZhuBean zhuBean) { zhuCallBack.success(zhuBean); } @Override public void failure() { } }); } public void getXin(){ myModel.getXin(new MyModel.MXinCallBack() { @Override public void success(XiangBean xiangBean) { pXinCallBack.success(xiangBean); } @Override public void failure() { } }); } public void getCar(){ myModel.getCar(new MyModel.MCarCallBack() { @Override public void success(XinBean xinBean) { carCallBack.success(xinBean); } @Override public void failure() { } }); } public interface DengCallBack{ public void success(DengBean dengBean); public void failure(); } public interface ZhuCallBack{ public void success(ZhuBean zhuBean); public void failure(); } public interface PXinCallBack{ public void success(XiangBean xiangBean); public void failure(); } public interface PCarCallBack{ public void success(XinBean xinBean); public void failure(); } public void xiaohui(){ zhuCallBack = null; dengCallBack =null; myModel = null; } }PlusView.javapackage com.example.dasd.myapplication.view; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.Toast; import com.example.dasd.myapplication.R; /** * Created by d on 2017/12/21. */ public class PlusView extends LinearLayout{ private EditText editText; private Button add; private Button revserse; private int mCount = 1; public PlusView(Context context) { super(context); } public PlusView(Context context, AttributeSet attrs) { super(context, attrs); View view = View.inflate(context, R.layout.layout_plus, null); editText = (EditText) view.findViewById(R.id.plus_edit); revserse = (Button) view.findViewById(R.id.plus_lift); add = (Button) view.findViewById(R.id.plus_right); add.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { String trim = editText.getText().toString().trim(); int count = Integer.valueOf(trim)+1; mCount = count; editText.setText(count+""); if(linsenter !=null){ linsenter.click(count); } } }); revserse.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { String trim = editText.getText().toString().trim(); int count = Integer.valueOf(trim); if(count>1){ count--; mCount = count; editText.setText(count+""); } else{ Toast.makeText(getContext(),"最小数量为1",Toast.LENGTH_SHORT).show(); } if(linsenter!=null){ linsenter.click(count); } } }); addView(view); } public void setEditView(int num){ if(editText!=null){ editText.setText(num+""); } } public PlusView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } ClickLisenter linsenter; public void setLinsenter(ClickLisenter linsenter){ this.linsenter = linsenter; } public interface ClickLisenter{ public void click(int count); } }