接口:
删除
https://www.zhaoapi.cn/product/deleteCart?uid=72&pid=1
查询
https://www.zhaoapi.cn/product/getCarts?uid=2563&soutre=android
添加
https://www.zhaoapi.cn/product/addCart?uid=71&pid=1
权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
依赖:
compile 'com.android.support:recyclerview-v7:26.1.0' compile 'com.facebook.fresco:fresco:1.5.0' 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 'com.squareup.retrofit2:converter-scalars:2.3.0' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.7' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5' compile 'fm.jiecao:jiecaovideoplayer:5.5' compile 'com.squareup.okhttp3:okhttp:3.9.0'
activity_main布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" tools:context="com.example.administrator.gouwuche.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/line3" android:orientation="vertical"> <fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard android:id="@+id/jiecao_Player" android:layout_width="match_parent" android:layout_height="200dp"></fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/line1" android:orientation="vertical"> <com.facebook.drawee.view.SimpleDraweeView android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/xq_simple" app:placeholderImage="@mipmap/ic_launcher" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/title1" android:text="标题"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/price" android:text="¥220"/> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/sahngjia" android:text="我是商家1"/> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="250dp" android:layout_height="wrap_content" android:orientation="horizontal" android:layout_alignParentBottom="true" android:layout_alignParentRight="true"> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/jiagou" android:text="加入购物车" android:background="#ff0"/> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/goumai" android:text="立即购买" android:background="#ff5522"/> <Button android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:id="@+id/tiao" android:text="跳转" android:background="#f778"/> </LinearLayout> </RelativeLayout>
MainActivity类
package com.example.administrator.gouwuche; 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.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.example.administrator.gouwuche.okhttp.AbstractUiCallBack; import com.example.administrator.gouwuche.okhttp.OkhttpUtils; import com.facebook.drawee.view.SimpleDraweeView; import java.io.IOException; import butterknife.BindView; import butterknife.ButterKnife; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer; import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends AppCompatActivity { //测试地址 String s1 = "http://ips.ifeng.com/video19.ifeng.com/video09/2014/06/16/1989823-102-086-0009.mp4"; @BindView(R.id.jiecao_Player) JCVideoPlayerStandard jiecaoPlayer; @BindView(R.id.xq_simple) SimpleDraweeView xqSimple; @BindView(R.id.title1) TextView title1; @BindView(R.id.price) TextView price; @BindView(R.id.sahngjia) TextView sahngjia; @BindView(R.id.line1) LinearLayout line1; @BindView(R.id.line3) LinearLayout line3; @BindView(R.id.jiagou) Button jiagou; @BindView(R.id.goumai) Button goumai; @BindView(R.id.tiao) Button tiao; private JCVideoPlayerStandard jcVideoPlayerStandard; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); shiPin(); jia(); jiache(); tiaozhuan(); } private void tiaozhuan() { tiao.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, GouCareActivity.class); startActivity(intent); } }); } private void jiache() { jiagou.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { OkHttpClient client=new OkHttpClient(); Request request = new Request.Builder() .url("https://www.zhaoapi.cn/product/addCart?uid=2563&pid=71") .build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { final String body = response.body().string(); runOnUiThread(new Runnable() { @Override public void run() { //吐司加入购物车成功 Toast.makeText(MainActivity.this,body,Toast.LENGTH_SHORT).show(); } }); } }); } }); } private void jia() { OkhttpUtils.getInstance().asy(null, "https://www.zhaoapi.cn/product/getProductDetail?pid=71", new AbstractUiCallBack<XqBean>() { @Override public void success(XqBean xqBean) { title1.setText(xqBean.getData().getTitle()); String[] split = xqBean.getData().getImages().split("\\|"); xqSimple.setImageURI(split[0]); price.setText(xqBean.getData().getPrice()+""); sahngjia.setText(xqBean.getSeller().getDescription()); } @Override public void failure(Exception e) { } }); } private void shiPin() { //设置标题 有需要的可以试一下 //getSupportActionBar().setTitle("jiecaovideoplayer的使用"); //找控件 jcVideoPlayerStandard = (JCVideoPlayerStandard) findViewById(R.id.jiecao_Player); //设置视频上显示的文字 jcVideoPlayerStandard.setUp(s1, JCVideoPlayerStandard.SCREEN_LAYOUT_NORMAL, "自取欺辱"); } @Override public void onBackPressed() { if (JCVideoPlayer.backPress()) { return; } super.onBackPressed(); } @Override protected void onPause() { super.onPause(); JCVideoPlayer.releaseAllVideos(); } }
RetrofitUnitl封装类
package com.example.administrator.gouwuche.retrofit_rxjava_okhttp; import okhttp3.OkHttpClient; import retrofit2.Retrofit; import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; import retrofit2.converter.gson.GsonConverterFactory; /** * Retrofit+Rxjava+OkHttp 单例模式+双重锁模式 封装类 */ public class RetrofitUnitl { private Retrofit mRetrofit; private String baseUrl; OkHttpClient client; private static RetrofitUnitl mRetrofitManager; private RetrofitUnitl(String baseUrl,OkHttpClient client){ this.baseUrl=baseUrl; this.client=client; initRetrofit(); } //单例模式+双重锁模式 封装方法 public static synchronized RetrofitUnitl getInstance(String baseUrl,OkHttpClient client){ if (mRetrofitManager == null){ mRetrofitManager = new RetrofitUnitl(baseUrl,client); } return mRetrofitManager; } //实例化Retrofit请求 private void initRetrofit() { mRetrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .client(client) .build(); } //封装泛型方法 public <T> T setCreate(Class<T> reqServer) { return mRetrofit.create(reqServer); } }
LoggingInterceptro拦截器
package com.example.administrator.gouwuche.retrofit_rxjava_okhttp; import java.io.IOException; import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.Response; //自定义添加公共请求参数的拦截器 public class LoggingInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); //开始响应的时间 long t1 = System.nanoTime(); //执行请求,返回响应的数据 Response response = chain.proceed(request); //请求结束,响应返回 long t2 = System.nanoTime(); //响应的耗费时间 System.out.println(" this request url " + response.request().url() + " " + (t2 - t1)/1000000); return response; } }
MyModel
package com.example.administrator.gouwuche.model; import android.util.Log; import com.example.administrator.gouwuche.DataDataBean; import com.example.administrator.gouwuche.IGetDataBase; import com.example.administrator.gouwuche.retrofit_rxjava_okhttp.RetrofitUnitl; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import okhttp3.OkHttpClient; /** * Created by Administrator on 2017/12/21. */ public class MyModel { public void getData(final MyCallBack callBack){ OkHttpClient ok=new OkHttpClient.Builder() .build(); RetrofitUnitl.getInstance("https://www.zhaoapi.cn",ok) .setCreate(IGetDataBase.class) .get(2563) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<DataDataBean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(DataDataBean dataDataBean) { callBack.success(dataDataBean); Log.i("======",dataDataBean.toString()); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); } public interface MyCallBack{ void success(DataDataBean dataDataBean); void fail(Exception e); } }
MyPresenter
package com.example.administrator.gouwuche.presenter; import com.example.administrator.gouwuche.DataDataBean; import com.example.administrator.gouwuche.model.MyModel; import com.example.administrator.gouwuche.view.IInterfaceListener; /** * Created by Administrator on 2017/12/21. */ public class MyPresenter { IInterfaceListener listener; MyModel myModel; public MyPresenter(IInterfaceListener listener){ this.listener=listener; this.myModel=new MyModel(); } public void getData(){ myModel.getData(new MyModel.MyCallBack() { @Override public void success(DataDataBean dataDataBean) { if(listener!=null){ listener.success(dataDataBean); } } @Override public void fail(Exception e) { if(listener!=null){ listener.fail(e); } } }); } }
IInterfaceListener
package com.example.administrator.gouwuche.view; import com.example.administrator.gouwuche.DataDataBean; /** * Created by Administrator on 2017/12/21. */ public interface IInterfaceListener { void success(DataDataBean dataDataBean); void fail(Exception e); }
IGetDataBasepackage com.example.administrator.gouwuche; import io.reactivex.Observable; import retrofit2.http.GET; import retrofit2.http.Query; /** * Created by Administrator on 2017/12/21. */ public interface IGetDataBase { @GET("/product/getCarts") Observable<DataDataBean> get(@Query("uid") int uid); }
IApplicationpackage com.example.administrator.gouwuche; import android.app.Application; import com.facebook.drawee.backends.pipeline.Fresco; /** * Created by Administrator on 2017/12/21. */ public class IApplication extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }
购物车布局<?xml version="1.0" encoding="utf-8"?> <RelativeLayout 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" tools:context="com.example.administrator.gouwuche.GouCareActivity"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recyclerview" android:layout_above="@+id/relat"></android.support.v7.widget.RecyclerView> <RelativeLayout android:id="@+id/relat" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" > <LinearLayout android:id="@+id/line3" android:gravity="center_vertical" android:background="#dedede" android:layout_width="match_parent" android:layout_height="60dp" android:orientation="horizontal"> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/quanxuan"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="全选"/> <LinearLayout android:layout_marginRight="130dp" android:layout_marginLeft="50dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="共0件商品" android:id="@+id/count_zong"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="合计:¥0.00" android:id="@+id/price_zong"/> </LinearLayout> </LinearLayout> <Button android:layout_alignParentRight="true" android:textColor="#ffffff" android:layout_width="wrap_content" android:layout_height="60dp" android:text="去结算(0)" android:background="#ff0000" /> </RelativeLayout> </RelativeLayout>
plus_layout布局<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="30dp" android:layout_height="30dp" android:id="@+id/revserse" android:text="-" android:background="#00FFFFFF"/> <EditText android:inputType="number" android:text="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/content"/> <Button android:background="#00FFFFFF" android:text="+" android:id="@+id/add" android:layout_width="30dp" android:layout_height="30dp" /> </LinearLayout>
适配器布局<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/hander" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="@dimen/margin_10dp" android:background="@color/background_color" android:id="@+id/view"></View> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical"> <!-- 商店checkbox--> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="@dimen/margin_15dp" android:paddingRight="@dimen/margin_15dp" android:paddingTop="@dimen/margin_10dp" android:paddingBottom="@dimen/margin_10dp" android:id="@+id/shop_checkbox" /> <!--商店名称--> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/shopname" android:textColor="@color/cblack" android:drawableLeft="@drawable/shopcart_shop" android:text="宝儿家服装" android:padding="@dimen/padding_10dp" android:drawablePadding="@dimen/padding_5dp" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <View android:layout_width="match_parent" android:layout_height="@dimen/margin_1dp" android:background="@color/background_color"></View> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:gravity="center_vertical"> <!--商品checkbox--> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/item_checkbox" android:padding="@dimen/margin_15dp"/> <!--商品图片--> <com.facebook.drawee.view.SimpleDraweeView android:layout_width="60dp" android:layout_height="60dp" android:id="@+id/item_pic" android:layout_margin="@dimen/margin_10dp"/> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/item_price" android:text="¥185" android:textColor="@color/main_red_text" android:textSize="@dimen/common_font_size_14"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/margin_5dp" android:layout_marginBottom="@dimen/margin_5dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="颜色:黑色" android:textSize="@dimen/common_font_size_12" android:id="@+id/item_name" android:textColor="@color/cblack"/> <!-- <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="尺寸:XL" android:textSize="@dimen/common_font_size_12" android:textColor="@color/cblack" android:id="@+id/item_size" android:layout_marginLeft="@dimen/margin_10dp"/>--> <com.example.administrator.gouwuche.PlasView android:layout_width="100dp" android:layout_height="wrap_content" android:id="@+id/plus_view_id"></com.example.administrator.gouwuche.PlasView> </LinearLayout> </LinearLayout> <View android:layout_width="1dp" android:layout_height="match_parent" android:layout_marginTop="@dimen/padding_10dp" android:layout_marginBottom="@dimen/padding_10dp" android:background="@color/splitline_color"></View> <ImageView android:id="@+id/item_del" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="@dimen/margin_20dp" android:src="@drawable/shopcart_delete"/> </LinearLayout> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="@dimen/margin_1dp" android:background="@color/background_color"></View> </LinearLayout> </LinearLayout>
GouCareActivitypackage com.example.administrator.gouwuche; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.widget.CheckBox; import android.widget.TextView; import com.example.administrator.gouwuche.presenter.MyPresenter; import com.example.administrator.gouwuche.view.IInterfaceListener; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class GouCareActivity extends AppCompatActivity implements IInterfaceListener{ @BindView(R.id.recyclerview) RecyclerView recyclerview; @BindView(R.id.quanxuan) CheckBox quanxuan; @BindView(R.id.count_zong) TextView countZong; @BindView(R.id.price_zong) TextView priceZong; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gou_care); ButterKnife.bind(this); MyPresenter presenter = new MyPresenter(this); presenter.getData(); LinearLayoutManager manager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); recyclerview.setLayoutManager(manager); adapter = new MyAdapter(this); recyclerview.setAdapter(adapter); adapter.setListener(new MyAdapter.UpdateUiListener() { @Override public void setTotal(String total, String num, boolean allCheck) { quanxuan.setChecked(allCheck); countZong.setText(num); priceZong.setText(total); } }); } @Override public void success(DataDataBean dataDataBean) { adapter.add(dataDataBean); } @Override public void fail(Exception e) { } @OnClick(R.id.quanxuan) public void onViewClicked() { adapter.selectAll(quanxuan.isChecked()); } }
PlasViewpackage com.example.administrator.gouwuche; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.widget.CheckBox; import android.widget.TextView; import com.example.administrator.gouwuche.presenter.MyPresenter; import com.example.administrator.gouwuche.view.IInterfaceListener; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class GouCareActivity extends AppCompatActivity implements IInterfaceListener{ @BindView(R.id.recyclerview) RecyclerView recyclerview; @BindView(R.id.quanxuan) CheckBox quanxuan; @BindView(R.id.count_zong) TextView countZong; @BindView(R.id.price_zong) TextView priceZong; private MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gou_care); ButterKnife.bind(this); MyPresenter presenter = new MyPresenter(this); presenter.getData(); LinearLayoutManager manager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); recyclerview.setLayoutManager(manager); adapter = new MyAdapter(this); recyclerview.setAdapter(adapter); adapter.setListener(new MyAdapter.UpdateUiListener() { @Override public void setTotal(String total, String num, boolean allCheck) { quanxuan.setChecked(allCheck); countZong.setText(num); priceZong.setText(total); } }); } @Override public void success(DataDataBean dataDataBean) { adapter.add(dataDataBean); } @Override public void fail(Exception e) { } @OnClick(R.id.quanxuan) public void onViewClicked() { adapter.selectAll(quanxuan.isChecked()); } }
适配器package com.example.administrator.gouwuche; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.example.administrator.gouwuche.okhttp.AbstractUiCallBack; import com.example.administrator.gouwuche.okhttp.OkhttpUtils; import com.facebook.drawee.view.SimpleDraweeView; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by Administrator on 2017/12/21. */ class MyAdapter extends RecyclerView.Adapter<MyAdapter.IViewHolder> { Context context; private List<DataDataBean.DataBean.ListBean> list; private Map<String, String> map = new HashMap<>(); private List<DataDataBean.DataBean.ListBean> first; public MyAdapter(Context context) { this.context = context; } public void add(DataDataBean dataDataBean) { if (this.list == null) { this.list = new ArrayList<>(); } //遍历商家 for (DataDataBean.DataBean shop : dataDataBean.getData()) { map.put(shop.getSellerid(), shop.getSellerName()); //遍历商品 for (int i = 0; i < shop.getList().size(); i++) { this.list.add(shop.getList().get(i)); } } setFirst(this.list); notifyDataSetChanged(); } public void setFirst(List<DataDataBean.DataBean.ListBean> first) { if (list.size() > 0) { list.get(0).setIsFirst(1); for (int i = 1; i < list.size(); i++) { if (list.get(i).getSellerid() == list.get(i - 1).getSellerid()) { list.get(i).setIsFirst(2); } else { list.get(i).setIsFirst(1); } } } } @Override public IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.adapter_layout, null); return new IViewHolder(view); } @Override public void onBindViewHolder(final IViewHolder holder, final int position) { //显示商品图片 if(list.get(position).getIsFirst()==1){ //显示商家 holder.shopCheckbox.setVisibility(View.VISIBLE); holder.shopname.setVisibility(View.VISIBLE); holder.shopCheckbox.setChecked(list.get(position).isShopSelected()); // 显示商家的名称 // list.get(position).getSellerid() 取到商家的id // map.get()取到 商家的名称 holder.shopname.setText(map.get(String.valueOf(list.get(position).getSellerid()))); }else{ holder.shopCheckbox.setVisibility(View.GONE); holder.shopname.setVisibility(View.GONE); } //控制 商品的 checkbox holder.itemCheckbox.setChecked(list.get(position).isItemSelected()); String[] url = list.get(position).getImages().split("\\|"); holder.itemPic.setImageURI(url[0]); holder.itemName.setText(list.get(position).getTitle()); holder.itemPrice.setText("¥"+list.get(position).getPrice()+""); holder.plusViewId.setEditText(list.get(position).getNum()); // 商家的checkbox holder.shopCheckbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { list.get(position).setShopSelected(holder.shopCheckbox.isChecked()); for(int i=0;i<list.size();i++){ if(list.get(position).getSellerid() == list.get(i).getSellerid()){ list.get(i).setItemSelected(holder.shopCheckbox.isChecked()); } } notifyDataSetChanged(); sum(list); } }); // 商品的checkbox holder.itemCheckbox.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { list.get(position).setItemSelected(holder.itemCheckbox.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.itemDel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final int pid1 = list.get(position).getPid(); OkhttpUtils.getInstance().asy(null, "https://www.zhaoapi.cn/product/deleteCart?uid=2563&pid="+pid1, new AbstractUiCallBack<SCBean>() { @Override public void success(SCBean scBean) { Toast.makeText(context, "删除的商品Id为"+pid1, Toast.LENGTH_SHORT).show(); } @Override public void failure(Exception e) { } }); list.remove(position); setFirst(list); notifyDataSetChanged(); sum(list); } }); //加减号 holder.plusViewId.setListener(new PlasView.ClickListener() { @Override public void click(int count) { list.get(position).setNum(count); notifyDataSetChanged(); sum(list); } }); } @Override public int getItemCount() { return list==null?0:list.size(); } /** * 计算总价 * @param list */ private void sum(List<DataDataBean.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).getNum() * list.get(i).getPrice(); }else { allCheck = false; } } listener.setTotal(totalMoney+"",totalNum+"",allCheck); } //全选 public void selectAll(boolean check){ for (int i=0;i<list.size();i++){ list.get(i).setShopSelected(check); list.get(i).setItemSelected(check); } notifyDataSetChanged(); sum(list); } public class IViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.view) View view; @BindView(R.id.shop_checkbox) CheckBox shopCheckbox; @BindView(R.id.shopname) TextView shopname; @BindView(R.id.hander) LinearLayout hander; @BindView(R.id.item_checkbox) CheckBox itemCheckbox; @BindView(R.id.item_pic) SimpleDraweeView itemPic; @BindView(R.id.item_price) TextView itemPrice; @BindView(R.id.item_name) TextView itemName; @BindView(R.id.plus_view_id) PlasView plusViewId; @BindView(R.id.item_del) ImageView itemDel; public IViewHolder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } } public UpdateUiListener listener; public void setListener(UpdateUiListener listener){ this.listener = listener; } public interface UpdateUiListener { public void setTotal(String total,String num,boolean allCheck); } }