<LinearLayout 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" android:orientation="vertical" tools:context="com.bwie.lian.productdetail.ProductDetailActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/de_rv" android:layout_width="match_parent" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="400dp" android:gravity="center_vertical" android:orientation="horizontal"> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:layout_margin="5dp" android:background="@drawable/normalheart"/> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:layout_margin="5dp" android:background="@drawable/dianpu"/> <ImageView android:layout_width="40dp" android:layout_height="40dp" android:layout_margin="5dp" android:background="@drawable/shopcar"/> <Button android:id="@+id/bt_addcart" android:layout_width="120dp" android:layout_height="50dp" android:background="#ff3660" android:layout_marginLeft="80dp" android:text="添加到购物车" /> <Button android:id="@+id/bt_order" android:layout_width="100dp" android:layout_height="50dp" android:background="#ff44ff" android:layout_marginLeft="20dp" android:text="立即购买" /> </LinearLayout>
</LinearLayout>
bean
public class ProductDetailBean { /** * msg : * seller : {"description":"我是商家17","icon":"http://120.27.23.105/images/icon.png","name":"商家17","productNums":999,"score":5,"sellerid":17} * code : 0 * data : {"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","itemtype":1,"pid":1,"price":118,"pscid":1,"salenum":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"} */ private String msg; private SellerBean seller; private String code; private DataBean data; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public SellerBean getSeller() { return seller; } public void setSeller(SellerBean seller) { this.seller = seller; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public DataBean getData() { return data; } public void setData(DataBean data) { this.data = data; } public static class SellerBean { /** * description : 我是商家17 * icon : http://120.27.23.105/images/icon.png * name : 商家17 * productNums : 999 * score : 5 * sellerid : 17 */ private String description; private String icon; private String name; private int productNums; private int score; private int sellerid; public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getIcon() { return icon; } public void setIcon(String icon) { this.icon = icon; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getProductNums() { return productNums; } public void setProductNums(int productNums) { this.productNums = productNums; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public int getSellerid() { return sellerid; } public void setSellerid(int sellerid) { this.sellerid = sellerid; } } public static class DataBean { /** * bargainPrice : 111.99 * createtime : 2017-10-14T21:39:05 * detailUrl : https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends * images : https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg * itemtype : 1 * pid : 1 * price : 118 * pscid : 1 * salenum : 0 * sellerid : 17 * subhead : 每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下 * title : 北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g */ private double bargainPrice; private String createtime; private String detailUrl; private String images; private int itemtype; private int pid; private int price; private int pscid; private int salenum; private int sellerid; private String subhead; private String title; public double getBargainPrice() { return bargainPrice; } public void setBargainPrice(double bargainPrice) { this.bargainPrice = bargainPrice; } public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } public String getDetailUrl() { return detailUrl; } public void setDetailUrl(String detailUrl) { this.detailUrl = detailUrl; } public String getImages() { return images; } public void setImages(String images) { this.images = images; } public int getItemtype() { return itemtype; } public void setItemtype(int itemtype) { this.itemtype = itemtype; } public int getPid() { return pid; } public void setPid(int pid) { this.pid = pid; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getPscid() { return pscid; } public void setPscid(int pscid) { this.pscid = pscid; } public int getSalenum() { return salenum; } public void setSalenum(int salenum) { this.salenum = salenum; } public int getSellerid() { return sellerid; } public void setSellerid(int sellerid) { this.sellerid = sellerid; } public String getSubhead() { return subhead; } public void setSubhead(String subhead) { this.subhead = subhead; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } }
IProductDetailModel
public interface IProductDetailModel { public void getDetail(OnNetListener<ProductDetailBean> onNetListener, String pid); public void addCart(OnNetListener<AddCartBean> onNetListener, String uid, String pid); }
ProductDetailModel
public class ProductDetailModel implements IProductDetailModel{ @Override public void getDetail(final OnNetListener<ProductDetailBean> onNetListener, String pid) { ServiceApi serviceApi = RetrofitHelper.getServiceApi(); serviceApi.getDetail(pid) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<ProductDetailBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { onNetListener.onFailure((Exception) e); } @Override public void onNext(ProductDetailBean productDetailBean) { onNetListener.onSuccess(productDetailBean); } }); } @Override public void addCart(final OnNetListener<AddCartBean> onNetListener, String uid, String pid) { ServiceApi serviceApi = RetrofitHelper.getServiceApi(); serviceApi.addCart(uid,pid) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<AddCartBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { onNetListener.onFailure((Exception) e); } @Override public void onNext(AddCartBean addCartBean) { onNetListener.onSuccess(addCartBean); } }); } }
IProductDetailView
public interface IProductDetailView { public void showDetail(ProductDetailBean detailBean); public void addCart(AddCartBean addCartBean); }
ProductDetailPresenter
public class ProductDetailPresenter { private final IProductDetailModel iProductDetailModel; private final IProductDetailView iProductDetailView; public ProductDetailPresenter(IProductDetailView iProductDetailView) { this.iProductDetailView = iProductDetailView; iProductDetailModel = new ProductDetailModel(); } public void getDetail(String pid) { iProductDetailModel.getDetail(new OnNetListener<ProductDetailBean>() { @Override public void onSuccess(ProductDetailBean detailBean) { iProductDetailView.showDetail(detailBean); } @Override public void onFailure(Exception e) { } }, pid); } public void addCart(String uid, String pid) { iProductDetailModel.addCart(new OnNetListener<AddCartBean>() { @Override public void onSuccess(AddCartBean addCartBean) { iProductDetailView.addCart(addCartBean); } @Override public void onFailure(Exception e) { } }, uid, pid); }
}
适配器
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical"> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/de_sdv" android:layout_width="match_parent" android:layout_height="200dp" app:placeholderImage="@mipmap/ic_launcher_round" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:orientation="vertical"> <TextView android:id="@+id/de_tv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp" /> <TextView android:id="@+id/de_price" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="26dp" android:text="¥" android:textColor="#F23030" android:textSize="20sp" /> <TextView android:id="@+id/de_pj" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="评价" /> </LinearLayout> </LinearLayout>
public class ProductDetailAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<ProductDetailBean.DataBean> dataList; public ProductDetailAdapter(Context context, List<ProductDetailBean.DataBean> dataList) { this.context = context; this.dataList = dataList; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.productdetail_rlv_item, null); return new MyViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { MyViewHolder myViewHolder = (MyViewHolder) holder; ProductDetailBean.DataBean dataBean = dataList.get(position); //设置图片 String[] strings = dataBean.getImages().split("\\|"); myViewHolder.sdv.setImageURI(strings[0]); myViewHolder.name.setText(dataBean.getSubhead()); myViewHolder.price.setText("¥" + dataBean.getPrice()); } @Override public int getItemCount() { if (dataList == null) { return 0; } return dataList.size(); } class MyViewHolder extends RecyclerView.ViewHolder { private final SimpleDraweeView sdv; private final TextView name; private final TextView price; private final TextView pj; public MyViewHolder(View itemView) { super(itemView); sdv = itemView.findViewById(R.id.de_sdv); name = itemView.findViewById(R.id.de_tv1); price = itemView.findViewById(R.id.de_price); pj = itemView.findViewById(R.id.de_pj); } } }
activity
public class ProductDetailActivity extends AppCompatActivity implements IProductDetailView { private RecyclerView mDeRv; private List<ProductDetailBean.DataBean> list; private Button mBtAddcart; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_product_detail); ProductDetailPresenter detailPresenter = new ProductDetailPresenter(this); initView(); //隐藏标题栏 ActionBar bar = getSupportActionBar(); bar.hide(); list = new ArrayList<>(); //获取Intent传递过来的值 Intent intent = getIntent(); String pid = intent.getStringExtra("pid"); Log.e("PID", pid + ""); //调用ProductDetailPresenter层的方法 detailPresenter.getDetail(pid); //设置线性布局管理器 mDeRv.setLayoutManager(new LinearLayoutManager(this)); int uid = MyApp.preferences.getInt("uid", 0); detailPresenter.addCart(uid+"",pid); } /** * 初始化组件 */ private void initView() { mDeRv = (RecyclerView) findViewById(R.id.de_rv); mBtAddcart = (Button) findViewById(R.id.bt_addcart); } @Override public void showDetail(ProductDetailBean detailBean) { ProductDetailBean.DataBean dataBean = detailBean.getData(); list.add(dataBean); //创建适配器 ProductDetailAdapter detailAdapter = new ProductDetailAdapter(this, list); mDeRv.setAdapter(detailAdapter); } @Override public void addCart(final AddCartBean addCartBean) { final String code = addCartBean.getCode(); mBtAddcart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(ProductDetailActivity.this, ShopCartActivity.class); startActivity(intent); /*if (code.equals("0")) { Toast.makeText(ProductDetailActivity.this, addCartBean.getMsg(), Toast.LENGTH_SHORT).show(); } else { Toast.makeText(ProductDetailActivity.this, addCartBean.getMsg(), Toast.LENGTH_SHORT).show(); }*/ } }); } }