您的位置:首页 > 编程语言 > Java开发

MVP+Retrofit2+RxJava京东的分类页面

2017-12-20 10:29 369 查看

网上有许许多多这种例子 这是根据我自己的理解集成的一个MVP

首先导入他的依赖

compile ‘com.youth.banner:banner:1.4.9’

compile ‘com.jakewharton:butterknife:8.4.0’

annotationProcessor ‘com.jakewharton:butterknife-compiler:8.4.0’

compile 'io.reactivex:rxandroid:1.1.0'
compile 'io.reactivex:rxjava:1.1.0'

compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.squareup.okhttp3:okhttp:3.2.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'

compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
compile 'com.facebook.fresco:fresco:0.11.0'
compile 'io.reactivex:rxandroid:1.0.1'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'

compile 'org.greenrobot:eventbus:3.1.1'


先加入网络权限

*主页面的视图左边ListView 右边ExpandableListView*

从Api开始说起

APi类

public class Api {

//首页网址

public static final String HomeUrl =”https://www.zhaoapi.cn/”;

}

这是进行Rxjava的接口

public interface Apiservier {

@GET(“ad/getAd”)

Observable getUser();

**

然后就是M层 model层的接口

**

public interface ShowModel {

void showmodel(Wangluo wangluo);

}

model层的类

public class GetModel implements ShowModel {

@Override
public void showmodel(final Wangluo wangluo) {
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())//新的配置
.baseUrl(Api.HomeUrl)
.build();
Apiservier apiSyserver = retrofit.create(Apiservier.class);
apiSyserver.getUser()
.subscribeOn(Schedulers.io())
//.observeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())//最后在主线程中执行
.subscribe(new Subscriber<HomeBean>() {
@Override
public void onComplet
4000
ed() {

}

@Override
public void onError(Throwable e) {

}

@Override
public void onNext(HomeBean homeBean) {
if(wangluo!=null){
wangluo.getWl(homeBean);
}
}
});

}


}

/判断网络连接成功的类

public interface Wangluo {

void getWl(HomeBean homeBean);

}

这是bean类

public class HomeBean {

private String msg;

private String code;

private TuijianBean tuijian;

private MiaoshaBean miaosha;

private List data;

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

public TuijianBean getTuijian() {
return tuijian;
}

public void setTuijian(TuijianBean tuijian) {
this.tuijian = tuijian;
}

public MiaoshaBean getMiaosha() {
return miaosha;
}

public void setMiaosha(MiaoshaBean miaosha) {
this.miaosha = miaosha;
}

public List<DataBean> getData() {
return data;
}

public void setData(List<DataBean> data) {
this.data = data;
}

public static class TuijianBean {

private String name;
private List<ListBean> list;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public List<ListBean> getList() {
return list;
}

public void setList(List<ListBean> list) {
this.list = list;
}

public static class ListBean {
/**
* bargainPrice : 11800.0
* createtime : 2017-10-10T17:33:37
* detailUrl : https://item.m.jd.com/product/4338107.html?utm#_source=androidapp&utm#_medium=appshare&utm#_campaign=t#_335139774&utm#_term=QQfriends * images : https://m.360buyimg.com/n0/jfs/t6700/155/2098998076/156185/6cf95035/595dd5a5Nc3a7dab5.jpg!q70.jpg * itemtype : 0
* pid : 57
* price : 5199.0
* pscid : 40
* salenum : 4343
* sellerid : 1
* subhead : 【i5 MX150 2G显存】全高清窄边框 8G内存 256固态硬盘 支持指纹识别 预装WIN10系统
* title : 小米(MI)Air 13.3英寸全金属轻薄笔记本(i5-7200U 8G 256G PCle SSD MX150 2G独显 FHD 指纹识别 Win10)银

*/

private double bargainPrice;
private String createtime;
private String detailUrl;
private String images;
private int itemtype;
private int pid;
private double 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 double getPrice() {
return price;
}

public void setPrice(double 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;
}
}
}

public static class MiaoshaBean {
private String name;
private int time;
private List<ListBeanX> list;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getTime() {
return time;
}

public void setTime(int time) {
this.time = time;
}

public List<ListBeanX> getList() {
return list;
}

public void setList(List<ListBeanX> list) {
this.list = list;
}

public static class ListBeanX {
private double bargainPrice;
private String createtime;
private String detailUrl;
private String images;
private int itemtype;
private int pid;
private double 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 double getPrice() {
return price;
}

public void setPrice(double 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;
}
}
}

public static class DataBean {
/**
* aid : 1
* createtime : 2017-11-28T19:35:04
* icon : https://www.zhaoapi.cn/images/quarter/ad1.png * productId : null
* title : 花生油
* type : 0
* url : http://m.mv14449315.icoc.bz/index.jsp */

private int aid;
private String createtime;
private String icon;
private Object productId;
private String title;
private int type;
private String url;

public int getAid() {
return aid;
}

public void setAid(int aid) {
this.aid = aid;
}

public String getCreatetime() {
return createtime;
}

public void setCreatetime(String createtime) {
this.createtime = createtime;
}

public String getIcon() {
return icon;
}

public void setIcon(String icon) {
this.icon = icon;
}

public Object getProductId() {
return productId;
}

public void setProductId(Object productId) {
this.productId = productId;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public int getType() {
return type;
}

public void setType(int type) {
this.type = type;
}

public String getUrl() {
return url;
}

public void setUrl(String url) {
this.url = url;
}
}


}

右边的Bean

public class RightBean {

/**
* msg : 获取子分类成功
* code : 0
* data : [{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"月饼",
* "pcid":1,"pscid":1},{"icon":"http://120.27.23.105/images/icon.png","name":"坚果炒货",
* "pcid":1,"pscid":2},{"icon":"http://120.27.23.105/images/icon.png","name":"糖巧","
* pcid":1,"pscid":3},{"icon":"http://120.27.23.105/images/icon.png","name":"休闲零食","pcid":1,"pscid":4},{"icon":"http://120.27.23.105/images/icon.png","name":"肉干肉脯","pcid":1,"pscid":5},{"icon":"http://120.27.23.105/images/icon.png","name":"饼干蛋糕","pcid":1,"pscid":6},{"icon":"http://120.27.23.105/images/icon.png","name":"蜜饯果干","pcid":1,"pscid":7},{"icon":"http://120.27.23.105/images/icon.png","name":"无糖食品","pcid":1,"pscid":8}],"name":"休闲零食","pcid":"1"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"新鲜水果","pcid":2,"pscid":9},{"icon":"http://120.27.23.105/images/icon.png","name":"海鲜水产","pcid":2,"pscid":10},{"icon":"http://120.27.23.105/images/icon.png","name":"精选肉类","pcid":2,"pscid":11},{"icon":"http://120.27.23.105/images/icon.png","name":"蛋类","pcid":2,"pscid":12},{"icon":"http://120.27.23.105/images/icon.png","name":"新鲜蔬菜","pcid":2,"pscid":13},{"icon":"http://120.27.23.105/images/icon.png","name":"冷冻食品","pcid":2,"pscid":14},{"icon":"http://120.27.23.105/images/icon.png","name":"饮品甜品","pcid":2,"pscid":15},{"icon":"http://120.27.23.105/images/icon.png","name":"大闸蟹","pcid":2,"pscid":16}],"name":"京东生鲜","pcid":"2"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"大米","pcid":3,"pscid":21},{"icon":"http://120.27.23.105/images/icon.png","name":"面粉","pcid":3,"pscid":22},{"icon":"http://120.27.23.105/images/icon.png","name":"杂粮","pcid":3,"pscid":23},{"icon":"http://120.27.23.105/images/icon.png","name":"食用油","pcid":3,"pscid":24},{"icon":"http://120.27.23.105/images/icon.png","name":"调味品","pcid":3,"pscid":25},{"icon":"http://120.27.23.105/images/icon.png","name":"方便速食","pcid":3,"pscid":26},{"icon":"http://120.27.23.105/images/icon.png","name":"有机食品","pcid":3,"pscid":27}],"name":"粮油调味","pcid":"3"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"饮用水","pcid":4,"pscid":28},{"icon":"http://120.27.23.105/images/icon.png","name":"饮料","pcid":4,"pscid":29},{"icon":"http://120.27.23.105/images/icon.png","name":"牛奶乳品","pcid":4,"pscid":30},{"icon":"http://120.27.23.105/images/icon.png","name":"名茶","pcid":4,"pscid":31},{"icon":"http://120.27.23.105/images/icon.png","name":"蜂蜜","pcid":4,"pscid":32}],"name":"水饮茗茶","pcid":"4"},{"cid":"1","list":[{"icon":"http://120.27.23.105/images/icon.png","name":"白酒","pcid":5,"pscid":33},{"icon":"http://120.27.23.105/images/icon.png","name":"葡萄酒","pcid":5,"pscid":34},{"icon":"http://120.27.23.105/images/icon.png","name":"洋酒","pcid":5,"pscid":35},{"icon":"http://120.27.23.105/images/icon.png","name":"啤酒","pcid":5,"pscid":36},{"icon":"http://120.27.23.105/images/icon.png","name":"黄酒","pcid":5,"pscid":37},{"icon":"http://120.27.23.105/images/icon.png","name":"陈年老酒","pcid":5,"pscid":38}],"name":"中外名酒","pcid":"5"}]
*/

private String msg;
private String code;
private List<DataBean> data;

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

public List<DataBean> getData() {
return data;
}

public void setData(List<DataBean> data) {
this.data = data;
}

public static class DataBean {
/**
* cid : 1
* list : [{"icon":"http://120.27.23.105/images/icon.png","name":"月饼","pcid":1,"pscid":1},{"icon":"http://120.27.23.105/images/icon.png","name":"坚果炒货","pcid":1,"pscid":2},{"icon":"http://120.27.23.105/images/icon.png","name":"糖巧","pcid":1,"pscid":3},{"icon":"http://120.27.23.105/images/icon.png","name":"休闲零食","pcid":1,"pscid":4},{"icon":"http://120.27.23.105/images/icon.png","name":"肉干肉脯","pcid":1,"pscid":5},{"icon":"http://120.27.23.105/images/icon.png","name":"饼干蛋糕","pcid":1,"pscid":6},{"icon":"http://120.27.23.105/images/icon.png","name":"蜜饯果干","pcid":1,"pscid":7},{"icon":"http://120.27.23.105/images/icon.png","name":"无糖食品","pcid":1,"pscid":8}]
* name : 休闲零食
* pcid : 1
*/

private String cid;
private String name;
private String pcid;
private List<ListBean> list;

public String getCid() {
return cid;
}

public void setCid(String cid) {
this.cid = cid;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPcid() {
return pcid;
}

public void setPcid(String pcid) {
this.pcid = pcid;
}

public List<ListBean> getList() {
return list;
}

public void setList(List<ListBean> list) {
this.list = list;
}

public static class ListBean {
/**
* icon : http://120.27.23.105/images/icon.png * name : 月饼
* pcid : 1
* pscid : 1
*/

private String icon;
private String name;
private int pcid;
private int pscid;

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 getPcid() {
return pcid;
}

public void setPcid(int pcid) {
this.pcid = pcid;
}

public int getPscid() {
return pscid;
}

public void setPscid(int pscid) {
this.pscid = pscid;
}
}
}


}

P层

present的接口

public interface IuserPresenter {

void getPresenter();

}

present的类

public class Mypresenter implements IuserPresenter,Wangluo{

ShowModel showModel;

IuserView iuserView;

//

public Mypresenter(IuserView iuserView) {

this.showModel = new GetModel();

this.iuserView = iuserView;

}

@Override
public void getPresenter() {
showModel.showmodel(this);
}

@Override
public void getWl(HomeBean homeBean) {
iuserView.getView(homeBean);
}


}

V层

public interface IuserView {

void getView(HomeBean home
a42c
Bean);

}

最后在HomeFragment实现view层的接口

public class HomeFragment extends Fragment implements IuserView {

private Banner banner;
private List<String> imageUrl;
private List<String> bannerTitle;

private List<HomeBean> mDatas = new ArrayList<>();
private String url;
private List<String> lists;
private List<HomeBean.DataBean> data;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
banner = view.findViewById(R.id.banner);

Mypresenter mypresenter = new Mypresenter(this);
mypresenter.getPresenter();

return view ;
}

@Override
public void getView(HomeBean homeBean) {
data = homeBean.getData();
lists = new ArrayList<>();
for(int i = 0; i< data.size(); i++){
url = data.get(i).getIcon();
lists.add(url);
}
banner.setImageLoader(new GlideImageLoader());
banner.setImages(lists);
banner.start();
}

private void initData() {
//图片地址
imageUrl = new ArrayList<>();
imageUrl.add("http://img05.tooopen.com/images/20140604/sy_62331342149.jpg");
imageUrl.add("http://pic33.nipic.com/20130916/3420027_192919547000_2.jpg");
imageUrl.add("http://img.taopic.com/uploads/allimg/121017/234940-12101FR22825.jpg");
/* //Title名称
bannerTitle = new ArrayList<>();
bannerTitle.add("一");
bannerTitle.add("二");
bannerTitle.add("三");*/
}

private void initView() {
banner.setImageLoader(new GlideImageLoader());
banner.setImages(imageUrl);
banner.setDelayTime(3000);
banner.start();
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mvp 界面 retrofit2