圖檔加載使用Fresco
https://www.fresco-cn.org/docs/supported-uris.html
進行初始化配置
顯示xml
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:gravity="center"
android:text="商品詳情" />
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/img2"
android:layout_width="match_parent"
android:layout_height="300dp" />
<TextView
android:id="@+id/title2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="描述" />
<TextView
android:id="@+id/price2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="原價" />
<TextView
android:id="@+id/bargainPrice2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="特價"
android:textColor="#f00" />
<Button
android:id="@+id/addCar2"
android:layout_width="match_parent"
android:layout_height="40dp"
android:background="#f00"
android:text="加入購物車"
android:textColor="#ffffff"
android:textSize="20dp" />
DetaiActivity
public class DetaiActivity extends AppCompatActivity {
private TabLayout tab_layout;
private ViewPager vp;
private List<String> tab_list;
private List<Fragment> fr_list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detai);
tab_layout = (TabLayout) findViewById(R.id.tab_layout);
vp = (ViewPager) findViewById(R.id.vp);
//設定tab的值
initTab();
//設定擴充卡
vp.setAdapter(new TabAdapter(getSupportFragmentManager()));
//進行關聯
tab_layout.setupWithViewPager(vp);
//顯示的頁數
vp.setOffscreenPageLimit(fr_list.size());
}
//擴充卡
class TabAdapter extends FragmentPagerAdapter {
public TabAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return tab_list.get(position);
}
@Override
public Fragment getItem(int position) {
return fr_list.get(position);
}
@Override
public int getCount() {
return fr_list.size();
}
}
private void initTab() {
tab_list = new ArrayList<>();
tab_list.add("商品");
tab_list.add("詳情");
tab_list.add("評論");
fr_list = new ArrayList<>();
//存放的是資料類型是Fragment
fr_list.add(new Fr_shangpin());
fr_list.add(new Fr_xiangqing());
fr_list.add(new Fr_pinglun());
}
}
activity顯示tablayout界面
<?xml version="1.0" encoding="utf-8"?>
<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="wangxuewei.bwie.com.mon.detail.DetaiActivity">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#f00"
app:tabGravity="fill"
app:tabIndicatorColor="#FFD700"
app:tabMode="fixed"
app:tabSelectedTextColor="#ffffff"
app:tabTextColor="@color/colorPrimary" />
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v4.view.ViewPager>
</LinearLayout>
DetailModel
public class DetailModel {
public void getAddCarData(String url, Map<String, String> map, final DetailPresenterAPI detailPresenterAPI) {
OkHttpUtils.getInstance().okGet(url, map, new CallBack() {
@Override
public void onSuccess(String json) {
Gson gson = new Gson();
CarBean carBean = gson.fromJson(json, CarBean.class);
detailPresenterAPI.addSuccess(carBean);
}
@Override
public void onFailed(String err) {
detailPresenterAPI.addFailed(err);
}
});
}
public void getDetailData(String url, Map<String, String> map, final DetailPresenterAPI2 detailPresenterAPI) {
OkHttpUtils.getInstance().okGet(url, map, new CallBack() {
@Override
public void onSuccess(String json) {
Gson gson = new Gson();
GoodsBean goodsBean = gson.fromJson(json, GoodsBean.class);
detailPresenterAPI.detailSuccess(goodsBean);
}
@Override
public void onFailed(String err) {
detailPresenterAPI.detailFailed(err);
}
});
}
}
DetailPresenter
public class DetailPresenter {
private DetailViewAPI detailViewAPI;
private Context context;
private final DetailModel detailModel;
public DetailPresenter(DetailViewAPI detailViewAPI, Context context) {
this.detailViewAPI = detailViewAPI;
this.context = context;
detailModel = new DetailModel();
}
public void getCarData(String url, String uid, String pid) {
Map<String, String> map = new HashMap<>();
map.put("source", "android");
map.put("uid", uid);
map.put("pid", pid);
detailModel.getAddCarData(url, map, new DetailPresenterAPI() {
@Override
public void addSuccess(CarBean carBean) {
detailViewAPI.onAddSuccess(carBean);
}
@Override
public void addFailed(String e) {
detailViewAPI.onAddFailed(e);
}
});
}
public void getDetailData(String url, String pid) {
Map<String, String> map = new HashMap<>();
map.put("source", "android");
map.put("pid", pid);
detailModel.getDetailData(url, map, new DetailPresenterAPI2() {
@Override
public void detailSuccess(GoodsBean goodsBean) {
detailViewAPI.onDetailSuccess(goodsBean);
}
@Override
public void detailFailed(String e) {
detailViewAPI.onDetailFailed(e);
}
});
}
}
DetailPresenterAPI
public interface DetailPresenterAPI {
void addSuccess(CarBean carBean);
void addFailed(String e);
}
DetailPresenterAPI2
public interface DetailPresenterAPI2 {
void detailSuccess(GoodsBean goodsBean);
void detailFailed(String e);
}
DetailViewAPI
public interface DetailViewAPI {
void onAddSuccess(CarBean carBean);
void onAddFailed(String e);
void onDetailSuccess(GoodsBean goodsBean);
void onDetailFailed(String e);
}
Fr_shangpin
public class Fr_shangpin extends Fragment implements DetailViewAPI {
String u = "https://www.zhaoapi.cn/product/getProductDetail";
String u2 = "https://www.zhaoapi.cn/product/addCart";
private List<GoodsBean.DataBean> list = new ArrayList<>();
private DetailPresenter detailPresenter;
private TextView title;
private TextView price;
private TextView bargainPrice;
private Button addCar;
private SimpleDraweeView img;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fr_shangpin, null);
initView(inflate);
return inflate;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
detailPresenter = new DetailPresenter(this, getContext());
detailPresenter.getDetailData(u, + "");
clickLietener();
}
//點選事件
private void clickLietener() {
addCar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
detailPresenter.getCarData(u2, + "", + "");
Toast.makeText(getContext(), "加購成功", Toast.LENGTH_SHORT).show();
}
});
}
private void initView(View view) {
img = view.findViewById(R.id.img2);
title = view.findViewById(R.id.title2);
price = view.findViewById(R.id.price2);
bargainPrice = view.findViewById(R.id.bargainPrice2);
addCar = view.findViewById(R.id.addCar2);
}
public void setView(GoodsBean.DataBean l) {
title.setText(l.getTitle());
price.setText(l.getPrice() + "");
bargainPrice.setText(l.getBargainPrice() + "");
String images = l.getImages();
String[] split = images.split("\\|");
Uri uri = Uri.parse(split[]);
img.setImageURI(uri);
}
@Override
public void onAddSuccess(CarBean carBean) {
}
@Override
public void onAddFailed(String e) {
}
@Override
public void onDetailSuccess(GoodsBean goodsBean) {
setView(goodsBean.getData());
}
@Override
public void onDetailFailed(String e) {
}
}
CarBean
public class CarBean {
/**
* msg : 加購成功
* code : 0
*/
private String msg;
private String code;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
GoodsBean
public class GoodsBean {
/**
* msg :
* seller : {"description":"我是商家3","icon":"http://120.27.23.105/images/icon.png","name":"商家3","productNums":999,"score":5,"sellerid":3}
* code : 0
* data : {"bargainPrice":5599,"createtime":"2017-10-10T17:30:32","detailUrl":"https://item.m.jd.com/product/4824715.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends","images":"https://m.360buyimg.com/n12/jfs/t7768/184/1153704394/148460/f42e1432/599a930fN8a85626b.jpg!q70.jpg","itemtype":0,"pid":59,"price":5599,"pscid":40,"salenum":675,"sellerid":3,"subhead":"遊戲本選擇4G獨顯,拒絕掉幀】更新版IPS全高清防眩光顯示屏,WASD方向鍵顔色加持,三大出風口立體散熱!","title":"戴爾DELL靈越遊匣15PR-6648B GTX1050 15.6英寸遊戲筆記本電腦(i5-7300HQ 8G 128GSSD+1T 4G獨顯 IPS)黑"}
*/
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 : 我是商家3
* icon : http://120.27.23.105/images/icon.png
* name : 商家3
* productNums : 999
* score : 5
* sellerid : 3
*/
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 : 5599
* createtime : 2017-10-10T17:30:32
* detailUrl : https://item.m.jd.com/product/4824715.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends
* images : https://m.360buyimg.com/n12/jfs/t7768/184/1153704394/148460/f42e1432/599a930fN8a85626b.jpg!q70.jpg
* itemtype : 0
* pid : 59
* price : 5599
* pscid : 40
* salenum : 675
* sellerid : 3
* subhead : 遊戲本選擇4G獨顯,拒絕掉幀】更新版IPS全高清防眩光顯示屏,WASD方向鍵顔色加持,三大出風口立體散熱!
* title : 戴爾DELL靈越遊匣15PR-6648B GTX1050 15.6英寸遊戲筆記本電腦(i5-7300HQ 8G 128GSSD+1T 4G獨顯 IPS)黑
*/
private int 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 int getBargainPrice() {
return bargainPrice;
}
public void setBargainPrice(int 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;
}
}
}