添加查询删除+retrofit请求+okHttp请求+fresco加载图片+recyclerview加载数据二级购物车+视频播放


接口:

删除
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);
}

IGetDataBase

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

IApplication

package 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>

GouCareActivity

package 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());


    }
}

PlasView

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



  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值