防京东的详情

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:layout_marginTop="22dp"
    android:orientation="vertical">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="#f89"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerInParent="true"
            android:text="<"
            android:textSize="25dp"
            android:id="@+id/back"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:layout_centerInParent="true"
            android:text="商品详情"
            android:textSize="25dp"
            />

    </RelativeLayout>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:id="@+id/image"
        />

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="111"
        />

    <TextView
        android:id="@+id/price"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:layout_marginTop="5dp"
        />


    <TextView
        android:id="@+id/price2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="111"
        android:textColor="#f00"
        android:layout_marginTop="5dp"
        />
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    >
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="添加购物车"
        android:textColor="#f89"
        android:id="@+id/add"
        />
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="查看购物车"
        android:textColor="#f89"
        android:id="@+id/select"
        />
</LinearLayout>


</LinearLayout>

model:

package myjd.jd.com.mn.mvp.Details.model;

import android.util.Log;

import myjd.jd.com.mn.bean.DetailsBean;
import myjd.jd.com.mn.service.Api;
import myjd.jd.com.mn.service.GetInstance;
import myjd.jd.com.mn.utils.RetrofitUtils;
import okhttp3.OkHttpClient;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

/**
 * Created by 小薇 on 2018/8/24.
 */

public class DatailsModelImpl {

    public void getData(final DetailsModel detailsModel, final int pid){
        OkHttpClient okHttpClient=new OkHttpClient
                .Builder()
                .build();
        RetrofitUtils.getInstance(Api.BAST,okHttpClient)
                .setCreate(GetInstance.class)
                .getDatails(pid)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Subscriber<DetailsBean>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(DetailsBean detailsBean) {
                           detailsModel.onSuccess(detailsBean,pid);
                        Log.i("ppp",detailsBean.getData().getTitle());

                    }
                });
    }
}

presenter:

package myjd.jd.com.mn.mvp.Details.presenter;

import myjd.jd.com.mn.DetailActivity;
import myjd.jd.com.mn.bean.DetailsBean;
import myjd.jd.com.mn.mvp.Details.model.DatailsModelImpl;
import myjd.jd.com.mn.mvp.Details.model.DetailsModel;
import myjd.jd.com.mn.mvp.Details.view.DetailsView;

/**
 * Created by 小薇 on 2018/8/24.
 */

public class DatailsPresenterImpl implements DetailsPresenter {

    private DetailsView detailsView;
    private DatailsModelImpl datailsModel;

    public DatailsPresenterImpl(DetailsView detailsView) {
        this.detailsView=detailsView;
        this.datailsModel = new DatailsModelImpl();
    }
     public void getDatas(int pid){
        datailsModel.getData(new DetailsModel() {
            @Override
            public void onSuccess(DetailsBean detailsBean, int pid) {
                detailsView.onSuccess(detailsBean);
            }

            @Override
            public void onError(int code) {
               detailsView.onError(1);
            }
        },pid);
     }
    @Override
    public void onDestory() {
         if(detailsView!=null){
             detailsView=null;
         }
    }
}

activity:

package myjd.jd.com.mn;

import android.content.Intent;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import myjd.jd.com.mn.bean.AddBean;
import myjd.jd.com.mn.bean.DetailsBean;
import myjd.jd.com.mn.mvp.Details.presenter.DatailsPresenterImpl;
import myjd.jd.com.mn.mvp.Details.view.DetailsView;
import myjd.jd.com.mn.service.Api;
import myjd.jd.com.mn.service.GoodsInstance;
import myjd.jd.com.mn.utils.RetrofitUtils;
import okhttp3.OkHttpClient;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

public class DetailActivity extends AppCompatActivity implements DetailsView {

    @BindView(R.id.back)
    TextView back;
    @BindView(R.id.image)
    ImageView image;
    @BindView(R.id.title)
    TextView title;
    @BindView(R.id.price)
    TextView price;
    @BindView(R.id.price2)
    TextView price2;
    @BindView(R.id.add)
    Button add;
    @BindView(R.id.select)
    Button select;
    private DatailsPresenterImpl datailsPresenter;
    private int pid;
    private int uid=16863;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        ButterKnife.bind(this);
        pid = getIntent().getIntExtra("pid", 0);
        datailsPresenter = new DatailsPresenterImpl(this);
        datailsPresenter.getDatas(pid);
        select.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(DetailActivity.this,GucActivity.class);
                startActivity(intent);
            }
        });
        //添加购物车
        add();
    }
    private void add() {
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                OkHttpClient okHttpClient=new OkHttpClient
                        .Builder()
                        .build();
                RetrofitUtils.getInstance(Api.BAST,okHttpClient)
                        .setCreate(GoodsInstance.class)
                        .getAdd(uid,pid,"null")
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        .subscribe(new Subscriber<AddBean>() {
                            @Override
                            public void onCompleted() {

                            }

                            @Override
                            public void onError(Throwable e) {

                            }

                            @Override
                            public void onNext(AddBean addBean) {
                                Toast.makeText(DetailActivity.this,""+addBean.getMsg(),Toast.LENGTH_LONG).show();
                            }
                        });

            }
        });
    }
    @Override
    public void onSuccess(DetailsBean detailsBean) {
        price.setText("原价:" + detailsBean.getData().getPrice() + "");
        //删除线
        price.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
        title.setText(detailsBean.getData().getTitle());
        price2.setText("优惠价:" + detailsBean.getData().getBargainPrice() + "");
        String images = detailsBean.getData().getImages().split("\\|")[0];
        Glide.with(this).load(images).into(image);
    }

    @Override
    public void onError(int code) {

    }

    @OnClick(R.id.back)
    public void onViewClicked() {
        finish();
    }
}

 

//购物车:

接口

package myjd.jd.com.mn.service;

import myjd.jd.com.mn.bean.AddBean;
import myjd.jd.com.mn.bean.GetCarts;
import retrofit2.http.GET;
import retrofit2.http.Query;
import rx.Observable;

/**
 * Created by 小薇 on 2018/8/24.
 */

public interface GoodsInstance {


    //https://www.zhaoapi.cn/product/getCarts
    @GET("product/getCarts")
    Observable<AddBean> getAdd(@Query("pid")int pid,@Query("uid")int uid,@Query("token")String token);

    @GET("product/getCarts")
    Observable<GetCarts> getCarts(@Query("uid")int uid , @Query("token") String token);

    @GET("product/updateCarts")
    Observable<AddBean> updateCart(@Query("uid") int Uid, @Query("pid") int Pid , @Query("sellerid") int sellerid
            , @Query("token") String Token, @Query("selected") int selected, @Query("num") int num);

    @GET("product/deleteCart")
    Observable<AddBean> deleteCartCart(@Query("uid") int uid, @Query("uid") int pid , @Query("token") String Token);
}

//接口:

package myjd.jd.com.mn.mvp.shoppingcart.model;

import myjd.jd.com.mn.bean.AddBean;
import myjd.jd.com.mn.bean.GetCarts;
import myjd.jd.com.mn.mvp.shoppingcart.GetDataBean;



public interface ShoppingCartModle {

    //添加
    void onAddBean(GetDataBean getDataBean, int pid, int uid, String token);


    //查询
    void onSelect(GetDataBean getDataBean,int uid,String token);


    //删除
    void onDelete(GetDataBean getDataBean,int uid,int pid,String token);


    //修改购物车
    void Updata(int uid , String Token,int sellerid,int pid,int num,int selected,GetDataBean getDataBean);
}

presneter:

package myjd.jd.com.mn.mvp.shoppingcart.presenter;



public interface ShoppingCartPresenter {

    void onDestry();
    /**
     * 查询
     *
     */
    void getGoods();

    /**
     * 添加
     */
    void jia(int pid);

    /**
     * 减少  修改num
     * 是否选择中 修改 selected
     * 添加多个 修改num
     * @param sellerid
     * @param pid
     * @param num
     * @param selected
     */
    void Updata(int sellerid,int pid,int num,int selected);

    /**
     * 删除
     */
    void Delete(int pid);

}
view:
package myjd.jd.com.mn.mvp.shoppingcart.view;

import myjd.jd.com.mn.bean.GetCarts;



public interface ShoopingCartView {

    void getGoodsData(GetCarts carts);

    void addGoodsData(String alert);
}

 

单独

package myjd.jd.com.mn.mvp.shoppingcart;

import myjd.jd.com.mn.bean.AddBean;
import myjd.jd.com.mn.bean.GetCarts;



public interface GetDataBean {
    void getDataBean(GetCarts getCarts);
    void addGoodsData(AddBean addBean);
}

//类:

model:

package myjd.jd.com.mn.mvp.shoppingcart.model;


import android.util.Log;

import myjd.jd.com.mn.bean.AddBean;
import myjd.jd.com.mn.bean.GetCarts;
import myjd.jd.com.mn.mvp.shoppingcart.GetDataBean;
import myjd.jd.com.mn.service.Api;
import myjd.jd.com.mn.service.GoodsInstance;
import myjd.jd.com.mn.utils.RetrofitUtils;
import okhttp3.OkHttpClient;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;


public class ShoppingCartModelImpl implements ShoppingCartModle{


    @Override
    public void onAddBean(final GetDataBean getDataBean, int pid, int uid, String token) {
        OkHttpClient okHttpClient=new OkHttpClient
                .Builder()
                .build();
        RetrofitUtils.getInstance(Api.BAST,okHttpClient)
                .setCreate(GoodsInstance.class)
                .getAdd(pid,uid,token)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Subscriber<AddBean>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(AddBean addBean) {
                        getDataBean.addGoodsData(addBean);
                    }
                });
    }

    @Override
    public void onSelect(final GetDataBean getDataBean, int uid, String token) {
        OkHttpClient okHttpClient=new OkHttpClient
                .Builder()
                .build();
        RetrofitUtils.getInstance(Api.BAST,okHttpClient)
                .setCreate(GoodsInstance.class)
                .getCarts(uid,token)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
               .subscribe(new Subscriber<GetCarts>() {
                   @Override
                   public void onCompleted() {

                   }

                   @Override
                   public void onError(Throwable e) {

                   }

                   @Override
                   public void onNext(GetCarts getCarts) {
                         getDataBean.getDataBean(getCarts);
                       Log.i("ppppp",getCarts.getData().get(0).getList().get(0).getTitle());
                   }
               });
    }

    @Override
    public void onDelete(final GetDataBean getDataBean, int uid, int pid, String token) {
        OkHttpClient okHttpClient=new OkHttpClient
                .Builder()
                .build();
        RetrofitUtils.getInstance(Api.BAST,okHttpClient)
                .setCreate(GoodsInstance.class)
                .deleteCartCart(uid,pid,token)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Subscriber<AddBean>() {
                  @Override
                  public void onCompleted() {

                  }

                  @Override
                  public void onError(Throwable e) {

                  }

                  @Override
                  public void onNext(AddBean addBean) {
                        getDataBean.addGoodsData(addBean);
                  }
              });
    }

    @Override
    public void Updata(int uid, String Token, int sellerid, int pid, int num, int selected, final GetDataBean getDataBean) {
        OkHttpClient okHttpClient=new OkHttpClient
                .Builder()
                .build();
        RetrofitUtils.getInstance(Api.BAST,okHttpClient)
                .setCreate(GoodsInstance.class)
                .updateCart(uid,pid,sellerid,Token,num,selected)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Subscriber<AddBean>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(AddBean addBean) {
                          getDataBean.addGoodsData(addBean);
                    }
                });

    }
}

 

presenter:

package myjd.jd.com.mn.mvp.shoppingcart.presenter;

import myjd.jd.com.mn.GucActivity;
import myjd.jd.com.mn.bean.AddBean;
import myjd.jd.com.mn.bean.GetCarts;
import myjd.jd.com.mn.mvp.shoppingcart.GetDataBean;
import myjd.jd.com.mn.mvp.shoppingcart.model.ShoppingCartModelImpl;
import myjd.jd.com.mn.mvp.shoppingcart.model.ShoppingCartModle;
import myjd.jd.com.mn.mvp.shoppingcart.view.ShoopingCartView;

/**
 * Created by 小薇 on 2018/8/24.
 */

public class ShoppingCartPresenterImpl implements ShoppingCartPresenter,GetDataBean{

    private ShoopingCartView shoopingCartView;
    private int uid;
    private String token;
    private ShoppingCartModle shoppingCartModle;
    public ShoppingCartPresenterImpl(ShoopingCartView shoopingCartView, int uid, String token) {
        this.shoopingCartView=shoopingCartView;
        this.uid=uid;
        this.token=token;
         this.shoppingCartModle=new ShoppingCartModelImpl();
    }

    @Override
    public void onDestry() {
          if(shoopingCartView!=null){
              shoopingCartView=null;
          }
    }

    @Override
    public void getGoods() {
          shoppingCartModle.onSelect(this,uid,token);
    }

    @Override
    public void jia(int pid) {
           shoppingCartModle.onAddBean(this,uid,pid,token);
    }

    @Override
    public void Updata(int sellerid, int pid, int num, int selected) {
        shoppingCartModle.Updata(uid,token,sellerid,pid,num,selected,this);
    }

    @Override
    public void Delete(int pid) {
          shoppingCartModle.onDelete(this,uid,pid,token);
    }

    @Override
    public void getDataBean(GetCarts getCarts) {
              shoopingCartView.getGoodsData(getCarts);
    }

    @Override
    public void addGoodsData(AddBean addBean) {
            if(addBean.getCode().equals("0")){
                getGoods();
            }else{
                shoopingCartView.addGoodsData(addBean.getMsg());
            }
    }
}

view:

package myjd.jd.com.mn;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;

import com.facebook.drawee.backends.pipeline.Fresco;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import myjd.jd.com.mn.adapter.CartAdapter;
import myjd.jd.com.mn.bean.GetCarts;
import myjd.jd.com.mn.mvp.shoppingcart.presenter.ShoppingCartPresenterImpl;
import myjd.jd.com.mn.mvp.shoppingcart.view.ShoopingCartView;

public class GucActivity extends AppCompatActivity implements ShoopingCartView {

    @BindView(R.id.exlistview)
    ExpandableListView exlistview;
    @BindView(R.id.good_cart_rb)
    CheckBox goodCartRb;
    @BindView(R.id.good_cart_xiaoji)
    TextView goodCartXiaoji;
    @BindView(R.id.good_cart_zhifu)
    TextView goodCartZhifu;
    private ShoppingCartPresenterImpl shoppingCartPresenter;
    private List<GetCarts.DataBean> data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Fresco.initialize(this);
        setContentView(R.layout.activity_guc);
        ButterKnife.bind(this);
        shoppingCartPresenter = new ShoppingCartPresenterImpl(this,16863,"7D5B9E808C9B473AC376D16D96935780");
        shoppingCartPresenter.getGoods();
    }

    @Override
    public void getGoodsData(GetCarts carts) {
        data = carts.getData();
        CartAdapter adapter=new CartAdapter(GucActivity.this,data);
        exlistview.setAdapter(adapter);
        int count = exlistview.getCount();
        for (int i = 0; i < count; i++) {
            exlistview.expandGroup(i);
        }

    }

    @Override
    public void addGoodsData(String alert) {

    }
}

 

//adapter:

package myjd.jd.com.mn.adapter;

import android.content.Context;
import android.graphics.Paint;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import myjd.jd.com.mn.R;
import myjd.jd.com.mn.bean.GetCarts;


public class CartAdapter extends BaseExpandableListAdapter{

    private Context context;
    private List<GetCarts.DataBean> list;
    public CartAdapter(Context context, List<GetCarts.DataBean> list) {
        this.context = context;
        this.list = list;
    }


    @Override
    public int getGroupCount() {
        return list.size();
    }

    @Override
    public int getChildrenCount(int i) {
        return list.get(i).getList().size();
    }

    @Override
    public Object getGroup(int i) {
        return list.get(i);
    }

    @Override
    public Object getChild(int i, int i1) {
        return list.get(i).getList().get(i1);
    }

    @Override
    public long getGroupId(int i) {
        return i;
    }

    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
        ViewHolderOne holderOne=null;
        if(view==null){
            holderOne=new ViewHolderOne();
            view=LayoutInflater.from(context).inflate(R.layout.fg_shoppingcart_one,viewGroup,false);
            holderOne.goods_one_title=view.findViewById(R.id.goods_cart_one_tename);
            view.setTag(holderOne);
        }else{
            holderOne= (ViewHolderOne) view.getTag();
        }
        holderOne.goods_one_title.setText(list.get(i).getSellerName());
        return view;

    }

    @Override
    public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {
        ViewHolder viewHolder = null;
        if (view == null) {
            View view1 = LayoutInflater.from(context).inflate(R.layout.fg_shoppingcart_item, null, false);
            view = view1;
            viewHolder = new ViewHolder(view1);
            view.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) view.getTag();
        }
        final List<GetCarts.DataBean.ListBean> listin = this.list.get(i).getList();
        final GetCarts.DataBean.ListBean listBean = listin.get(i1);
        final int selected = list.get(i).getList().get(i1).getSelected();
        final String sellerid = list.get(i).getSellerid();
        final int pid = list.get(i).getList().get(i1).getPid();
        final int num = list.get(i).getList().get(i1).getNum();
        Glide.with(context).load(listBean.getImages().split("\\|")[0]).into(viewHolder.goodCartImage);
        viewHolder.goodCartCount.setText(listBean.getNum() + "");
        viewHolder.goodCartPrice2.setText(listBean.getBargainPrice() + "");
        viewHolder.goodCartPrice.setText(listBean.getPrice() + "");
        viewHolder.goodCartPrice.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG); //中间横线(删除线)
        viewHolder.goodCartTitle.setText(listBean.getTitle());
        viewHolder.goodCartJian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int num = list.get(i).getList().get(i1).getNum();
                if(num>1){
                    num--;
                }else{
                    num=0;
                }
                list.get(i).getList().get(i1).setNum(num);
                notifyDataSetChanged();
            }
        });
        viewHolder.goodCartJia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int num = list.get(i).getList().get(i1).getNum();
                num++;
                list.get(i).getList().get(i1).setNum(num);
                notifyDataSetChanged();
            }
        });
        return view;
    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return true;
    }
    class ViewHolderOne{
      TextView goods_one_title;
    }
    static class ViewHolder {
        @BindView(R.id.good_cart_rb)
        CheckBox goodCartRb;
        @BindView(R.id.good_cart_image)
        ImageButton goodCartImage;
        @BindView(R.id.good_cart_title)
        TextView goodCartTitle;
        @BindView(R.id.good_cart_price)
        TextView goodCartPrice;
        @BindView(R.id.good_cart_price2)
        TextView goodCartPrice2;
        @BindView(R.id.good_cart_jian)
        TextView goodCartJian;
        @BindView(R.id.good_cart_count)
        TextView goodCartCount;
        @BindView(R.id.good_cart_jia)
        TextView goodCartJia;
        @BindView(R.id.delete_cart)
        Button deleteCart;

        ViewHolder(View view) {
            ButterKnife.bind(this, view);
        }
    }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值