MVP+Retrofit封装实现详情页面
来源:互联网 发布:淘宝怎么抢现货了快点 编辑:程序博客网 时间:2024/05/20 02:25
//依赖
//图片无限轮播compile 'com.youth.banner:banner:1.4.9'//图片加载依赖compile 'org.webjars.npm:react-imageloader:2.1.0'compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'compile 'com.github.bumptech.glide:glide:3.7.0'// frescocompile 'com.facebook.fresco:fresco:0.12.0'// xrecyclerview的依赖compile 'com.jcodecraeer:xrecyclerview:1.3.2'// Retrofit库compile 'com.squareup.retrofit2:retrofit:2.0.1'// rxjava+rxandroid+retrofit2+okhttpcompile 'io.reactivex:rxjava:1.0.14'compile 'io.reactivex:rxandroid:1.0.1'compile 'com.squareup.retrofit2:converter-gson:2.0.1'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'//gson解析数据compile 'com.google.code.gson:gson:2.6.2'
//权限
<uses-permission android:name="android.permission.INTERNET" />
//utils工具了
Bitmap的封装
public class BitmapUtil { String uri; ImageView ls_iv; public void getpic(String uri,ImageView ls_iv){ this.uri=uri; this.ls_iv=ls_iv; new Thread(runnable).start(); } Handler handler=new Handler(){ public void handleMessage(Message msg) { ls_iv.setImageBitmap((Bitmap) msg.obj); }; }; Runnable runnable=new Runnable() { @Override public void run() { // TODO Auto-generated method stub try { URL url = new URL(uri); HttpURLConnection connection=(HttpURLConnection) url.openConnection(); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); InputStream is = connection.getInputStream(); Bitmap bitmap= BitmapFactory.decodeStream(is); Message msg = new Message(); msg.obj=bitmap; msg.what=0; handler.sendMessage(msg); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } };}
//ImageLoader的封装的工具类
public class BnImageLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { Uri uri = Uri.parse((String) path); imageView.setImageURI(uri); } public ImageView createImageView(Context context) { //使用fresco,需要创建它提供的ImageView,当然你也可以用自己自定义的具有图片加载功能的ImageView SimpleDraweeView simpleDraweeView=new SimpleDraweeView(context); return simpleDraweeView; }}
//Retrofit封装的工具类
public class RetrofitManager { private Retrofit mRetrofit; private String baseUrl; OkHttpClient client;//有关拦截器 private static RetrofitManager mRetrofitManager; private RetrofitManager(){} private RetrofitManager(String baseUrl, OkHttpClient client){ this.baseUrl=baseUrl; this.client=client;//有关拦截器 initRetrofit(); } public static synchronized RetrofitManager getInstance(String baseUrl,OkHttpClient client){//有关拦截器 if (mRetrofitManager == null){ mRetrofitManager = new RetrofitManager(baseUrl,client); } return mRetrofitManager; } private void initRetrofit() { mRetrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .client(client)//有关拦截器 .build(); } public <T> T setCreate(Class<T> reqServer){ return mRetrofit.create(reqServer); }}
//myapp
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); }}
android:name="utils.MyApp"
//首页
public interface SYUrl { //首页 @GET("v5/newlist?page=1&size=20&ver=1512745500001&pdduid=3470667255") Observable<Sy_bean> getSy();}
//详情页
public interface BNUrl { //详情页 @GET("v5/goods/{goods_id}?pdduid=3470667255") Observable<Bn_Bean> getPj(@Path("goods_id") String goods_id);}
//评价
public interface PJUrl { //评价 @GET("reviews/{id}?page=1&size=10&label=1&is_back=1&pdduid=3470667255") Observable<Pj_Bean> getPj(@Path("id") String id);}
Been类
public class Sy_bean { private long ver; private int server_time; private List<GoodsListBean> goods_list; public long getVer() { return ver; } public void setVer(long ver) { this.ver = ver; } public int getServer_time() { return server_time; } public void setServer_time(int server_time) { this.server_time = server_time; } public List<GoodsListBean> getGoods_list() { return goods_list; } public void setGoods_list(List<GoodsListBean> goods_list) { this.goods_list = goods_list; } public static class GoodsListBean { private int normal_price; private int cnt; private String thumb_url; private int event_type; private String country; private String short_name; private GroupBean group; private String allowed_region; private int time; private String image_url; private int market_price; private String goods_name; private String hd_thumb_url; private int quantity; private boolean is_onsale; private int goods_id; private int is_app; private int mall_id; private int region_limit; public int getNormal_price() { return normal_price; } public void setNormal_price(int normal_price) { this.normal_price = normal_price; } public int getCnt() { return cnt; } public void setCnt(int cnt) { this.cnt = cnt; } public String getThumb_url() { return thumb_url; } public void setThumb_url(String thumb_url) { this.thumb_url = thumb_url; } public int getEvent_type() { return event_type; } public void setEvent_type(int event_type) { this.event_type = event_type; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getShort_name() { return short_name; } public void setShort_name(String short_name) { this.short_name = short_name; } public GroupBean getGroup() { return group; } public void setGroup(GroupBean group) { this.group = group; } public String getAllowed_region() { return allowed_region; } public void setAllowed_region(String allowed_region) { this.allowed_region = allowed_region; } public int getTime() { return time; } public void setTime(int time) { this.time = time; } public String getImage_url() { return image_url; } public void setImage_url(String image_url) { this.image_url = image_url; } public int getMarket_price() { return market_price; } public void setMarket_price(int market_price) { this.market_price = market_price; } public String getGoods_name() { return goods_name; } public void setGoods_name(String goods_name) { this.goods_name = goods_name; } public String getHd_thumb_url() { return hd_thumb_url; } public void setHd_thumb_url(String hd_thumb_url) { this.hd_thumb_url = hd_thumb_url; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } public boolean isIs_onsale() { return is_onsale; } public void setIs_onsale(boolean is_onsale) { this.is_onsale = is_onsale; } public int getGoods_id() { return goods_id; } public void setGoods_id(int goods_id) { this.goods_id = goods_id; } public int getIs_app() { return is_app; } public void setIs_app(int is_app) { this.is_app = is_app; } public int getMall_id() { return mall_id; } public void setMall_id(int mall_id) { this.mall_id = mall_id; } public int getRegion_limit() { return region_limit; } public void setRegion_limit(int region_limit) { this.region_limit = region_limit; } public static class GroupBean { /** * customer_num : 2 * price : 13900 */ private int customer_num; private int price; public int getCustomer_num() { return customer_num; } public void setCustomer_num(int customer_num) { this.customer_num = customer_num; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } } }}
View层接口
首页View层接口
public interface ISYDataView { //首页View层接口 public void showSYData(List<Sy_bean.GoodsListBean> sylist);}
//Model层的接口
public interface ISYDataModel { //首页 public void getSYData(Observer observer);}
//首页继承接口
public class SYDataModel implements ISYDataModel { //首页 @Override public void getSYData(Observer observer) { OkHttpClient client=new OkHttpClient.Builder().build(); RetrofitManager.getInstance("http://apiv3.yangkeduo.com/",client) .setCreate(SYUrl.class) .getSy() .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(observer); }}
//首页P层
public class SYPresenter { //首页 SYDataModel model; ISYDataView view; List<Sy_bean.GoodsListBean> sylist=new ArrayList<>(); public SYPresenter(ISYDataView view) { this.view = view; model=new SYDataModel(); } public void spData(){ model.getSYData(new Observer<Sy_bean>(){ @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.i("111111p","onError"); } @Override public void onNext(Sy_bean sy_bean) { sylist.addAll(sy_bean.getGoods_list()); view.showSYData(sylist); } }); }}
//首页MainActivity继承接口
public class XiangActivity extends AppCompatActivity implements ISYDataView{ SYAdapter syAdapter; private RecyclerView mRv; List<Sy_bean.GoodsListBean> sylist=new ArrayList<>(); SYPresenter syPresenter; String id; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_xiang); initView(); syPresenter=new SYPresenter(this); showSYData(sylist); syPresenter.spData(); } private void initView() { mRv = (RecyclerView) findViewById(R.id.rv); } @Override public void showSYData(final List<Sy_bean.GoodsListBean> sylist) { GridLayoutManager manager=new GridLayoutManager(this,2); mRv.setLayoutManager(manager); syAdapter=new SYAdapter(this,sylist); mRv.setAdapter(syAdapter); syAdapter.setOnItemClick(new SYAdapter.OnItemClickListener() { @Override public void OnItemClick(View view, int position, String name, String pic, String price) { id=sylist.get(position).getGoods_id()+""; Intent intent = new Intent(XiangActivity.this,DetailsActivity.class); intent.putExtra("id",id); intent.putExtra("name",name); intent.putExtra("pic",pic); intent.putExtra("price",price); startActivity(intent); } }); }}activity_xiang.xml
<?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="clas.view.XiangActivity"> <TextView android:text="新品" android:id="@+id/tv" android:textSize="25sp" android:gravity="center" android:textColor="@android:color/holo_red_dark" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v7.widget.RecyclerView android:id="@+id/rv" android:layout_width="match_parent" android:layout_below="@+id/tv" android:layout_height="match_parent" > </android.support.v7.widget.RecyclerView></RelativeLayout>
//首页的适配器
public class SYAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { Context context; List<Sy_bean.GoodsListBean> sylist; OnItemClickListener listener; public SYAdapter(Context context, List<Sy_bean.GoodsListBean> sylist) { this.context = context; this.sylist = sylist; } public interface OnItemClickListener { public void OnItemClick(View view, int position, String name, String pic, String price); } public void setOnItemClick(OnItemClickListener listener) { this.listener = listener; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.sy_item, null); return new SYHolder(view); } @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) { ((SYHolder) holder).sdv.setImageURI(sylist.get(position).getImage_url()); ((SYHolder) holder).sy_tv.setText(sylist.get(position).getGoods_name()); ((SYHolder) holder).sy_price.setText("¥" + sylist.get(position).getGroup().getPrice()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (listener != null) { listener.OnItemClick(view, position, ((SYHolder) holder).sy_tv.getText().toString(), sylist.get(position).getImage_url(), ((SYHolder) holder).sy_price.getText().toString()); } } }); } @Override public int getItemCount() { return sylist != null ? sylist.size() : 0; } class SYHolder extends RecyclerView.ViewHolder { SimpleDraweeView sdv; TextView sy_tv; TextView sy_price; public SYHolder(View itemView) { super(itemView); sdv = itemView.findViewById(R.id.sdv); sy_tv = itemView.findViewById(R.id.sy_tv); sy_price = itemView.findViewById(R.id.sy_price); } }}sy_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_marginLeft="35dp" android:layout_height="match_parent"> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/sdv" android:layout_marginLeft="30dp" android:layout_width="200dp" android:layout_height="200dp" /> <TextView android:id="@+id/sy_price" android:layout_marginLeft="30dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/sy_tv" android:layout_marginLeft="30dp" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
Been类public class Bn_Bean { private String goods_sn; private int goods_id; private int cat_id; private int mall_id; private String goods_name; private int is_app; private int event_type; private String goods_desc; private int market_price; private int is_onsale; private String thumb_url; private String hd_thumb_url; private String allowed_region; private String country; private String warehouse; private int goods_type; private String image_url; private int is_refundable; private int quick_refund; private int is_pre_sale; private int pre_sale_time; private String share_desc; private int rv_image; private int rv; private int gpv; private String skip_goods; private int shipment_limit_second; private int sales; private int is_mall_rec; private int min_on_sale_group_price; private int max_on_sale_group_price; private int min_on_sale_normal_price; private int max_on_sale_normal_price; private int min_group_price; private int max_group_price; private int max_normal_price; private int min_normal_price; private int tag; private int cost_template_id; private int show_rec; private int is_folt; private int is_installment; private int app_new; private String red_envelopes; private String cost_province_codes; private int server_time; private int is_home_delivery; private int second_hand; private int cat_id_1; private int cat_id_2; private int cat_id_3; private List<SkuBean> sku; private List<GalleryBean> gallery; private List<GroupBean> group; private List<ServicePromiseBean> service_promise; private List<?> images; public String getGoods_sn() { return goods_sn; } public void setGoods_sn(String goods_sn) { this.goods_sn = goods_sn; } public int getGoods_id() { return goods_id; } public void setGoods_id(int goods_id) { this.goods_id = goods_id; } public int getCat_id() { return cat_id; } public void setCat_id(int cat_id) { this.cat_id = cat_id; } public int getMall_id() { return mall_id; } public void setMall_id(int mall_id) { this.mall_id = mall_id; } public String getGoods_name() { return goods_name; } public void setGoods_name(String goods_name) { this.goods_name = goods_name; } public int getIs_app() { return is_app; } public void setIs_app(int is_app) { this.is_app = is_app; } public int getEvent_type() { return event_type; } public void setEvent_type(int event_type) { this.event_type = event_type; } public String getGoods_desc() { return goods_desc; } public void setGoods_desc(String goods_desc) { this.goods_desc = goods_desc; } public int getMarket_price() { return market_price; } public void setMarket_price(int market_price) { this.market_price = market_price; } public int getIs_onsale() { return is_onsale; } public void setIs_onsale(int is_onsale) { this.is_onsale = is_onsale; } public String getThumb_url() { return thumb_url; } public void setThumb_url(String thumb_url) { this.thumb_url = thumb_url; } public String getHd_thumb_url() { return hd_thumb_url; } public void setHd_thumb_url(String hd_thumb_url) { this.hd_thumb_url = hd_thumb_url; } public String getAllowed_region() { return allowed_region; } public void setAllowed_region(String allowed_region) { this.allowed_region = allowed_region; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getWarehouse() { return warehouse; } public void setWarehouse(String warehouse) { this.warehouse = warehouse; } public int getGoods_type() { return goods_type; } public void setGoods_type(int goods_type) { this.goods_type = goods_type; } public String getImage_url() { return image_url; } public void setImage_url(String image_url) { this.image_url = image_url; } public int getIs_refundable() { return is_refundable; } public void setIs_refundable(int is_refundable) { this.is_refundable = is_refundable; } public int getQuick_refund() { return quick_refund; } public void setQuick_refund(int quick_refund) { this.quick_refund = quick_refund; } public int getIs_pre_sale() { return is_pre_sale; } public void setIs_pre_sale(int is_pre_sale) { this.is_pre_sale = is_pre_sale; } public int getPre_sale_time() { return pre_sale_time; } public void setPre_sale_time(int pre_sale_time) { this.pre_sale_time = pre_sale_time; } public String getShare_desc() { return share_desc; } public void setShare_desc(String share_desc) { this.share_desc = share_desc; } public int getRv_image() { return rv_image; } public void setRv_image(int rv_image) { this.rv_image = rv_image; } public int getRv() { return rv; } public void setRv(int rv) { this.rv = rv; } public int getGpv() { return gpv; } public void setGpv(int gpv) { this.gpv = gpv; } public String getSkip_goods() { return skip_goods; } public void setSkip_goods(String skip_goods) { this.skip_goods = skip_goods; } public int getShipment_limit_second() { return shipment_limit_second; } public void setShipment_limit_second(int shipment_limit_second) { this.shipment_limit_second = shipment_limit_second; } public int getSales() { return sales; } public void setSales(int sales) { this.sales = sales; } public int getIs_mall_rec() { return is_mall_rec; } public void setIs_mall_rec(int is_mall_rec) { this.is_mall_rec = is_mall_rec; } public int getMin_on_sale_group_price() { return min_on_sale_group_price; } public void setMin_on_sale_group_price(int min_on_sale_group_price) { this.min_on_sale_group_price = min_on_sale_group_price; } public int getMax_on_sale_group_price() { return max_on_sale_group_price; } public void setMax_on_sale_group_price(int max_on_sale_group_price) { this.max_on_sale_group_price = max_on_sale_group_price; } public int getMin_on_sale_normal_price() { return min_on_sale_normal_price; } public void setMin_on_sale_normal_price(int min_on_sale_normal_price) { this.min_on_sale_normal_price = min_on_sale_normal_price; } public int getMax_on_sale_normal_price() { return max_on_sale_normal_price; } public void setMax_on_sale_normal_price(int max_on_sale_normal_price) { this.max_on_sale_normal_price = max_on_sale_normal_price; } public int getMin_group_price() { return min_group_price; } public void setMin_group_price(int min_group_price) { this.min_group_price = min_group_price; } public int getMax_group_price() { return max_group_price; } public void setMax_group_price(int max_group_price) { this.max_group_price = max_group_price; } public int getMax_normal_price() { return max_normal_price; } public void setMax_normal_price(int max_normal_price) { this.max_normal_price = max_normal_price; } public int getMin_normal_price() { return min_normal_price; } public void setMin_normal_price(int min_normal_price) { this.min_normal_price = min_normal_price; } public int getTag() { return tag; } public void setTag(int tag) { this.tag = tag; } public int getCost_template_id() { return cost_template_id; } public void setCost_template_id(int cost_template_id) { this.cost_template_id = cost_template_id; } public int getShow_rec() { return show_rec; } public void setShow_rec(int show_rec) { this.show_rec = show_rec; } public int getIs_folt() { return is_folt; } public void setIs_folt(int is_folt) { this.is_folt = is_folt; } public int getIs_installment() { return is_installment; } public void setIs_installment(int is_installment) { this.is_installment = is_installment; } public int getApp_new() { return app_new; } public void setApp_new(int app_new) { this.app_new = app_new; } public String getRed_envelopes() { return red_envelopes; } public void setRed_envelopes(String red_envelopes) { this.red_envelopes = red_envelopes; } public String getCost_province_codes() { return cost_province_codes; } public void setCost_province_codes(String cost_province_codes) { this.cost_province_codes = cost_province_codes; } public int getServer_time() { return server_time; } public void setServer_time(int server_time) { this.server_time = server_time; } public int getIs_home_delivery() { return is_home_delivery; } public void setIs_home_delivery(int is_home_delivery) { this.is_home_delivery = is_home_delivery; } public int getSecond_hand() { return second_hand; } public void setSecond_hand(int second_hand) { this.second_hand = second_hand; } public int getCat_id_1() { return cat_id_1; } public void setCat_id_1(int cat_id_1) { this.cat_id_1 = cat_id_1; } public int getCat_id_2() { return cat_id_2; } public void setCat_id_2(int cat_id_2) { this.cat_id_2 = cat_id_2; } public int getCat_id_3() { return cat_id_3; } public void setCat_id_3(int cat_id_3) { this.cat_id_3 = cat_id_3; } public List<SkuBean> getSku() { return sku; } public void setSku(List<SkuBean> sku) { this.sku = sku; } public List<GalleryBean> getGallery() { return gallery; } public void setGallery(List<GalleryBean> gallery) { this.gallery = gallery; } public List<GroupBean> getGroup() { return group; } public void setGroup(List<GroupBean> group) { this.group = group; } public List<ServicePromiseBean> getService_promise() { return service_promise; } public void setService_promise(List<ServicePromiseBean> service_promise) { this.service_promise = service_promise; } public List<?> getImages() { return images; } public void setImages(List<?> images) { this.images = images; } public static class SkuBean { private long sku_id; private int goods_id; private String thumb_url; private int quantity; private int limit_quantity; private int sold_quantity; private int init_quantity; private int is_onsale; private String spec; private int normal_price; private int group_price; private int price; private int market_price; private int weight; private List<SpecsBean> specs; public long getSku_id() { return sku_id; } public void setSku_id(long sku_id) { this.sku_id = sku_id; } public int getGoods_id() { return goods_id; } public void setGoods_id(int goods_id) { this.goods_id = goods_id; } public String getThumb_url() { return thumb_url; } public void setThumb_url(String thumb_url) { this.thumb_url = thumb_url; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } public int getLimit_quantity() { return limit_quantity; } public void setLimit_quantity(int limit_quantity) { this.limit_quantity = limit_quantity; } public int getSold_quantity() { return sold_quantity; } public void setSold_quantity(int sold_quantity) { this.sold_quantity = sold_quantity; } public int getInit_quantity() { return init_quantity; } public void setInit_quantity(int init_quantity) { this.init_quantity = init_quantity; } public int getIs_onsale() { return is_onsale; } public void setIs_onsale(int is_onsale) { this.is_onsale = is_onsale; } public String getSpec() { return spec; } public void setSpec(String spec) { this.spec = spec; } public int getNormal_price() { return normal_price; } public void setNormal_price(int normal_price) { this.normal_price = normal_price; } public int getGroup_price() { return group_price; } public void setGroup_price(int group_price) { this.group_price = group_price; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getMarket_price() { return market_price; } public void setMarket_price(int market_price) { this.market_price = market_price; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public List<SpecsBean> getSpecs() { return specs; } public void setSpecs(List<SpecsBean> specs) { this.specs = specs; } public static class SpecsBean { /** * spec_key : 颜色 * spec_value : 黑色 */ private String spec_key; private String spec_value; public String getSpec_key() { return spec_key; } public void setSpec_key(String spec_key) { this.spec_key = spec_key; } public String getSpec_value() { return spec_value; } public void setSpec_value(String spec_value) { this.spec_value = spec_value; } } } public static class GalleryBean { /** * id : 3775324922 * goods_id : 202517471 * url : http://omsproductionimg.yangkeduo.com/images/2017-11-16/d24b7f10f62a9ff513e101b3e1637a4a.jpeg * width : 750 * height : 865 * priority : 24 * type : 2 */ private long id; private int goods_id; private String url; private int width; private int height; private int priority; private int type; public long getId() { return id; } public void setId(long id) { this.id = id; } public int getGoods_id() { return goods_id; } public void setGoods_id(int goods_id) { this.goods_id = goods_id; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } public int getPriority() { return priority; } public void setPriority(int priority) { this.priority = priority; } public int getType() { return type; } public void setType(int type) { this.type = type; } } public static class GroupBean { /** * id : 365745480 * group_id : 365745480 * goods_id : 202517471 * price : 0 * customer_num : 1 * start_time : 1451577600 * end_time : 2082729600 * duration : 86400 * buy_limit : 999999 * order_limit : 999999 * is_open : 1 */ private int id; private int group_id; private int goods_id; private int price; private int customer_num; private int start_time; private int end_time; private int duration; private int buy_limit; private int order_limit; private int is_open; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getGroup_id() { return group_id; } public void setGroup_id(int group_id) { this.group_id = group_id; } public int getGoods_id() { return goods_id; } public void setGoods_id(int goods_id) { this.goods_id = goods_id; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } public int getCustomer_num() { return customer_num; } public void setCustomer_num(int customer_num) { this.customer_num = customer_num; } public int getStart_time() { return start_time; } public void setStart_time(int start_time) { this.start_time = start_time; } public int getEnd_time() { return end_time; } public void setEnd_time(int end_time) { this.end_time = end_time; } public int getDuration() { return duration; } public void setDuration(int duration) { this.duration = duration; } public int getBuy_limit() { return buy_limit; } public void setBuy_limit(int buy_limit) { this.buy_limit = buy_limit; } public int getOrder_limit() { return order_limit; } public void setOrder_limit(int order_limit) { this.order_limit = order_limit; } public int getIs_open() { return is_open; } public void setIs_open(int is_open) { this.is_open = is_open; } } public static class ServicePromiseBean { /** * type : 全场包邮 * desc : 所有商品均无条件包邮 */ private String type; private String desc; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } }}View层接口//详情View层接口
public interface IBNDataView { //详情View层接口 public void bnShowData(List<Bn_Bean.SkuBean> bnlist); public String getBnId();}
//Model层的接口
public interface IBNDataModel { //详情页 public void getBNData(String goods_id, Observer observer);}
//详情页面继承接口
public class BNDataModel implements IBNDataModel { //详情 @Override public void getBNData(String goods_id,Observer observer) { OkHttpClient client=new OkHttpClient.Builder().build(); RetrofitManager.getInstance("http://apiv4.yangkeduo.com/",client) .setCreate(BNUrl.class) .getPj(goods_id) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(observer); }}
//详情页P层
public class BNPresenter {//详情页面 BNDataModel model; IBNDataView view; List<Bn_Bean.SkuBean> bnlist=new ArrayList<>(); public BNPresenter(IBNDataView view) { this.view = view; model=new BNDataModel(); } public void ppData(){ String goods_id=view.getBnId(); model.getBNData(goods_id,new Observer<Bn_Bean>(){ @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.i("111111banner","onError......"); } @Override public void onNext(Bn_Bean bn_bean) { bnlist.addAll(bn_bean.getSku()); view.bnShowData(bnlist); Log.i("111111banner","onNext"+bnlist); } }); }}
//轮播页面继承接口
public class DetailsActivity extends AppCompatActivity implements IPJDataView,IBNDataView { private Banner mbanner; private TextView mPriceName, more; private ListView d_pj_lv; PJPresenter pjPresenter; String name; List<Pj_Bean.DataBean> pjlist = new ArrayList<>(); List<Bn_Bean.SkuBean> bnlist = new ArrayList<>(); String pic; String price; String id; PJAdapter pjAdapter; BNPresenter bnPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_details); initView(); Intent intent = getIntent(); name = intent.getStringExtra("name"); pic = intent.getStringExtra("pic"); price = intent.getStringExtra("price"); id = intent.getStringExtra("id"); initData(); pjPresenter = new PJPresenter(this); pjShowData(pjlist); pjPresenter.ppData(); bnPresenter = new BNPresenter(this); bnShowData(bnlist); bnPresenter.ppData(); more.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent2 = new Intent(DetailsActivity.this, PingJiaActivity.class); intent2.putExtra("id", id); startActivity(intent2); } }); } private void initData() { mPriceName.setText(price + "\r\n" + name); } private void initView() { mbanner = (Banner) findViewById(R.id.mbanner); mPriceName = (TextView) findViewById(R.id.price_name); d_pj_lv = (ListView) findViewById(R.id.d_pj_lv); more = findViewById(R.id.more); } @Override public void pjShowData(List<Pj_Bean.DataBean> pjlist) { pjAdapter = new PJAdapter(this, pjlist); d_pj_lv.setAdapter(pjAdapter); } @Override public String getId() { return id; } @Override public void bnShowData(List<Bn_Bean.SkuBean> bnlist) { ArrayList<String> pic = new ArrayList<>(); for (int i = 0; i < bnlist.size(); i++) { pic.add(bnlist.get(i).getThumb_url()); Log.i("111111b", "" + bnlist.get(i).getThumb_url()); } mbanner.setImageLoader(new BnImageLoader()); mbanner.setImages(pic); mbanner.start(); } @Override public String getBnId() { return id; }}activity_details.xml
<?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="clas.view.DetailsActivity"> <com.youth.banner.Banner android:id="@+id/mbanner" android:layout_width="match_parent" android:layout_height="350dp" /> <TextView android:id="@+id/price_name" android:layout_width="match_parent" android:textSize="15sp" android:layout_height="wrap_content" /> <LinearLayout android:layout_width="match_parent" android:background="@color/gainsboro" android:layout_height="12dp"></LinearLayout> <LinearLayout android:id="@+id/d_ll" android:orientation="horizontal" android:layout_width="match_parent" android:gravity="center_vertical" android:layout_height="wrap_content"> <TextView android:text="商品评价" android:textSize="20sp" android:layout_marginLeft="20dp" android:textColor="@android:color/black" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="1" /> <TextView android:id="@+id/more" android:layout_width="match_parent" android:layout_height="match_parent" android:text="查看全部>" android:gravity="center" android:layout_weight="1" android:layout_marginLeft="200dp" /> </LinearLayout> <ListView android:id="@+id/d_pj_lv" android:layout_marginLeft="20dp" android:layout_width="match_parent" android:layout_height="465dp"></ListView> <Button android:id="@+id/gwc" android:layout_width="match_parent" android:layout_height="60dp" android:text="加入购物车" android:textSize="20sp" android:background="@color/crimson" /></LinearLayout>
//轮播详情页的适配器public class PJAdapter extends BaseAdapter { Context context; List<Pj_Bean.DataBean> pjlist; public PJAdapter(Context context, List<Pj_Bean.DataBean> pjlist) { this.context = context; this.pjlist = pjlist; } @Override public int getCount() { return pjlist.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { PJHolder holder; if(convertView==null){ convertView=View.inflate(context, R.layout.pj_item,null); holder=new PJHolder(); holder.pj_tv=convertView.findViewById(R.id.pj_tv); holder.name_tv=convertView.findViewById(R.id.name_tv); convertView.setTag(holder); }else{ holder= (PJHolder) convertView.getTag(); } holder.name_tv.setText(pjlist.get(position).getName()); holder.pj_tv.setText(pjlist.get(position).getComment()); return convertView; } class PJHolder{ TextView name_tv; TextView pj_tv; }}
pj_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:orientation="vertical" android:layout_height="match_parent"> <TextView android:id="@+id/name_tv" android:layout_width="match_parent" android:textSize="20sp" android:text="111111111" android:textColor="@color/colorAccent" android:layout_height="wrap_content" /> <TextView android:id="@+id/pj_tv" android:layout_marginTop="10dp" android:layout_width="match_parent" android:textSize="15sp" android:text="111111111" android:layout_height="wrap_content" /></LinearLayout>
Been类public class Pj_Bean { /** * data : [{"uid":2513954815,"comment":"很好的一双鞋子,平时穿36的,这次买了37的有点大,还好店家送了鞋垫,穿着刚好,鞋子打开没有异味,店家在里面放了香包,打开就有一股淡淡的香味。","stars":0,"desc_score":5,"logistics_score":5,"service_score":5,"specs":"[{\"spec_id\":1,\"spec_key\":\"颜色\",\"spec_value\":\"黑色\"},{\"spec_id\":77529,\"spec_key\":\"尺码\",\"spec_value\":\"37标准码\"}]","time":1512469342,"avatar":"http://avatar.yangkeduo.com/a/4a91af91439765085c770b00ae75a8dc959c3628-1507610658?x-oss-process=image/resize,w_100","name":"左慧","pictures":[{"url":"http://pinduoduoimg.yangkeduo.com/review/2017-12-05/26f2f1fd865d7678f2a9beba9ca3ff53.jpeg","width":600,"height":800},{"url":"http://pinduoduoimg.yangkeduo.com/review/2017-12-05/abfb4dd9c7b6433b5c20159c719b6a4d.jpeg","width":600,"height":800},{"url":"http://pinduoduoimg.yangkeduo.com/review/2017-12-05/e670dca56f5864cf99eca93048b33b29.jpeg","width":600,"height":800}],"review_id":"127699239209479135"},{"uid":4332939209,"comment":"很喜欢的一双鞋子,和卖家描述的一样个人一直很喜欢运动休闲风,这双鞋上脚舒适保暖,不管走跳蹦跑都可以,喜欢可以购买,价格便宜","stars":0,"desc_score":5,"logistics_score":5,"service_score":5,"specs":"[{\"spec_id\":1,\"spec_key\":\"颜色\",\"spec_value\":\"黑色\"},{\"spec_id\":33339,\"spec_key\":\"尺码\",\"spec_value\":\"40标准码\"}]","time":1512538610,"avatar":"http://avatar.yangkeduo.com/a/62a481221d5083bae589a8c458b933cb6e31e500-1508804376?x-oss-process=image/resize,w_100","name":"洋洋","pictures":[],"review_id":"127844506127969247"}] * recommend_list : [] * average : 0.0 * number : 52 * score_num : 92 * labels : [{"id":2,"level":1,"name":"质量很好","num":10,"positive":1},{"id":746,"level":2,"name":"很舒服","num":5,"positive":1},{"id":3,"level":1,"name":"质量不错","num":3,"positive":1}] */ private double average; private int number; private int score_num; private List<DataBean> data; private List<?> recommend_list; private List<LabelsBean> labels; public double getAverage() { return average; } public void setAverage(double average) { this.average = average; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public int getScore_num() { return score_num; } public void setScore_num(int score_num) { this.score_num = score_num; } public List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } public List<?> getRecommend_list() { return recommend_list; } public void setRecommend_list(List<?> recommend_list) { this.recommend_list = recommend_list; } public List<LabelsBean> getLabels() { return labels; } public void setLabels(List<LabelsBean> labels) { this.labels = labels; } public static class DataBean { /** * uid : 2513954815 * comment : 很好的一双鞋子,平时穿36的,这次买了37的有点大,还好店家送了鞋垫,穿着刚好,鞋子打开没有异味,店家在里面放了香包,打开就有一股淡淡的香味。 * stars : 0 * desc_score : 5 * logistics_score : 5 * service_score : 5 * specs : [{"spec_id":1,"spec_key":"颜色","spec_value":"黑色"},{"spec_id":77529,"spec_key":"尺码","spec_value":"37标准码"}] * time : 1512469342 * avatar : http://avatar.yangkeduo.com/a/4a91af91439765085c770b00ae75a8dc959c3628-1507610658?x-oss-process=image/resize,w_100 * name : 左慧 * pictures : [{"url":"http://pinduoduoimg.yangkeduo.com/review/2017-12-05/26f2f1fd865d7678f2a9beba9ca3ff53.jpeg","width":600,"height":800},{"url":"http://pinduoduoimg.yangkeduo.com/review/2017-12-05/abfb4dd9c7b6433b5c20159c719b6a4d.jpeg","width":600,"height":800},{"url":"http://pinduoduoimg.yangkeduo.com/review/2017-12-05/e670dca56f5864cf99eca93048b33b29.jpeg","width":600,"height":800}] * review_id : 127699239209479135 */ private long uid; private String comment; private int stars; private int desc_score; private int logistics_score; private int service_score; private String specs; private int time; private String avatar; private String name; private String review_id; private List<PicturesBean> pictures; public long getUid() { return uid; } public void setUid(long uid) { this.uid = uid; } public String getComment() { return comment; } public void setComment(String comment) { this.comment = comment; } public int getStars() { return stars; } public void setStars(int stars) { this.stars = stars; } public int getDesc_score() { return desc_score; } public void setDesc_score(int desc_score) { this.desc_score = desc_score; } public int getLogistics_score() { return logistics_score; } public void setLogistics_score(int logistics_score) { this.logistics_score = logistics_score; } public int getService_score() { return service_score; } public void setService_score(int service_score) { this.service_score = service_score; } public String getSpecs() { return specs; } public void setSpecs(String specs) { this.specs = specs; } public int getTime() { return time; } public void setTime(int time) { this.time = time; } public String getAvatar() { return avatar; } public void setAvatar(String avatar) { this.avatar = avatar; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getReview_id() { return review_id; } public void setReview_id(String review_id) { this.review_id = review_id; } public List<PicturesBean> getPictures() { return pictures; } public void setPictures(List<PicturesBean> pictures) { this.pictures = pictures; } public static class PicturesBean { /** * url : http://pinduoduoimg.yangkeduo.com/review/2017-12-05/26f2f1fd865d7678f2a9beba9ca3ff53.jpeg * width : 600 * height : 800 */ private String url; private int width; private int height; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public int getWidth() { return width; } public void setWidth(int width) { this.width = width; } public int getHeight() { return height; } public void setHeight(int height) { this.height = height; } } } public static class LabelsBean { /** * id : 2 * level : 1 * name : 质量很好 * num : 10 * positive : 1 */ private int id; private int level; private String name; private int num; private int positive; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public int getPositive() { return positive; } public void setPositive(int positive) { this.positive = positive; } }}View层接口//评价XView层接口
public interface IPJDataView { //评价View层接口 public void pjShowData(List<Pj_Bean.DataBean> pjlist); public String getId();}
//Model层的接口
public interface IPJDataModel { //总评价 public void getPJData(String id, Observer observer);}
//评价页面继承接口
public class PJDataModel implements IPJDataModel { //评价页面 @Override public void getPJData(String id,Observer observer) { OkHttpClient client=new OkHttpClient.Builder().build(); RetrofitManager.getInstance("http://apiv4.yangkeduo.com/",client) .setCreate(PJUrl.class) .getPj(id) .observeOn(AndroidSchedulers.mainThread()) .subscribeOn(Schedulers.io()) .subscribe(observer); }}
//评价页面P层
public class PJPresenter { //评价页面 PJDataModel model; IPJDataView view; List<Pj_Bean.DataBean> pjlist=new ArrayList<>(); public PJPresenter(IPJDataView view) { this.view = view; model=new PJDataModel(); } public void ppData(){ String id=view.getId(); model.getPJData(id,new Observer<Pj_Bean>(){ @Override public void onCompleted() { } @Override public void onError(Throwable e) { Log.i("111111p","onError"); } @Override public void onNext(Pj_Bean pj_bean) { pjlist.addAll(pj_bean.getData()); view.pjShowData(pjlist); } }); }}
//评价页面继承接口
//评价页面View层的Activitypublic class PingJiaActivity extends AppCompatActivity implements IPJDataView{ PJXAdapter pjxAdapter; PJPresenter pjPresenter; String id; List<Pj_Bean.DataBean> pjlist = new ArrayList<>(); private ListView mPjLv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ping_jia); initView(); Intent intent=getIntent(); id=intent.getStringExtra("id"); pjPresenter=new PJPresenter(this); pjPresenter.ppData(); } private void initView() { mPjLv = (ListView) findViewById(R.id.pj_lv); } @Override public void pjShowData(List<Pj_Bean.DataBean> pjlist) { pjxAdapter=new PJXAdapter(this,pjlist); mPjLv.setAdapter(pjxAdapter); } @Override public String getId() { return id; }}
activity_ping_jia.xml
<?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" tools:context="clas.view.PingJiaActivity"> <ListView android:id="@+id/pj_lv" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView></LinearLayout>
//评价页面的适配器
//评价页面的适配器public class PJXAdapter extends BaseAdapter { Context context; List<Pj_Bean.DataBean> pjlist; public PJXAdapter(Context context, List<Pj_Bean.DataBean> pjlist) { this.context = context; this.pjlist = pjlist; } @Override public int getCount() { return pjlist.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { PjxHolder holder; if(convertView==null){ convertView=View.inflate(context, R.layout.pjx_item,null); holder=new PjxHolder(); holder.p_name=convertView.findViewById(R.id.p_name); holder.p_nr=convertView.findViewById(R.id.p_nr); holder.p_sdv=convertView.findViewById(R.id.p_sdv); convertView.setTag(holder); }else{ holder= (PjxHolder) convertView.getTag(); } holder.p_name.setText(pjlist.get(position).getName()); holder.p_nr.setText(pjlist.get(position).getComment()); holder.p_sdv.setImageURI(pjlist.get(position).getAvatar()); return convertView; } class PjxHolder{ TextView p_name,p_nr; SimpleDraweeView p_sdv; }}pjx_item.xml
<?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"> <TextView android:id="@+id/p_name" android:text="11111" android:textColor="@color/red" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:id="@+id/p_nr" android:text="11111" android:layout_marginTop="15dp" android:layout_width="match_parent" android:layout_height="wrap_content" /> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/p_sdv" android:layout_width="200dp" android:layout_height="200dp" /></LinearLayout>
阅读全文
0 0
- MVP+Retrofit封装实现详情页面
- RXjava封装实现详情页面
- 终极封装 Rxjava+Retrofit+okhttp+mvp实现
- MVp封装RxJava+Retrofit
- andriod——Retrofit+Fresco+MVP+RxJAVA列表展示商品点击跳转此详情页面
- MVP+Retrofit封装网络请求
- Android Retrofit+RxJava+MVP封装
- retrofit-rxjava封装、mvp-retrofit-rxjava demo
- retrofit 用mvp实现
- MVp+RXJava+Retrofit+RecyclerView展示首页和详情页
- RxJava+okhttp+Retrofit+Mvp 的封装
- RXJava+Retrofit+MVP的简单封装
- Android MVP+Retrofit(封装)+RxJava实例
- MVP+Retrofit+Rxjava项目的封装
- MVP封装成基类结合retrofit和Rxjava
- MVP封装成基类结合retrofit和Rxjava
- mvp基类+retrofit封装 请求数据
- Rxjava+Retrofit+okhttp+mvp实现
- python ucs-2与ucs-4编码方式判断
- 曾经的王者Dubbo低调重启维护 焕发新春的它要走向何处
- 计算1到10,20到30,35到45的和
- Window7+ 现代Opengl+ mingw + freeglut + glew + 命令行
- URL(Uniform Resource Locators)的语法
- MVP+Retrofit封装实现详情页面
- iview的icon组件怎么添加点击事件
- 求几个数的平均数
- android sdk sdkmanger无界面使用方法(命令行更新SDK)
- SEO学习:浅析Ajax技术
- 机器学习—感知机
- 毛神_集合网络地址
- springboot 1.5.3 源码分析(一):项目初始化过程
- 服务器负载均衡原理及实现