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

被折叠的 条评论
为什么被折叠?



