MyApp
public class MApp extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}
}
util-Constant
public class Constant {
public static final String BASE_URL = "https://app.tuozhe8.com/";
}
util-MyRetrofit
public interface MyRetrofit {
@GET("api.php/api/Lists/content_lists&version=1.7&token=&type=1&cat=&catid2=&page=1")
Observable<House> getHouse();
}
util-Retrofitutil
public class RetrofitUtil {
private final Retrofit retrofit;
private HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY);
private static final RetrofitUtil retrofitUtil = new RetrofitUtil();
private RetrofitUtil() {
retrofit = new Retrofit.Builder()
.baseUrl(Constant.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(getOkClient())
.build();
}
private OkHttpClient getOkClient() {
return new OkHttpClient.Builder()
.addInterceptor(httpLoggingInterceptor)
.build();
}
public static RetrofitUtil getRetrofitUtil() {
return retrofitUtil;
}
public <T> T create(Class<T> clazz) {
return retrofit.create(clazz);
}
}
mvp-model-HouseModel
public class HouseModel {
public Observable<House> getHouse() {
return RetrofitUtil.getRetrofitUtil().create(MyRetrofit.class).getHouse();
}
}
mvp-presenter-Hosepresenter
public class HousePresenter {
public HouseView view;
private final HouseModel model;
private CompositeDisposable compositeDisposable = new CompositeDisposable();
public HousePresenter(HouseView view) {
this.view = view;
model = new HouseModel();
}
public void getHouse() {
model.getHouse()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<House>() {
@Override
public void onSubscribe(Disposable d) {
compositeDisposable.add(d);
}
@Override
public void onNext(House house) {
view.onGetHouseSuccess(house);
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
//内存优化
public void onDestroy() {
view = null;
compositeDisposable.clear();
}
}
mvp-view-HouseView
public interface HouseView {
void onGetHouseSuccess(House house);
}
mvp-view-Fragment
public class OneFragment extends Fragment implements HouseView {
@BindView(R.id.one_rv)
RecyclerView oneRv;
Unbinder unbinder;
private HousePresenter presenter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.one_fg, container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//请求网络
presenter = new HousePresenter(this);
initRv();
}
private void initRv() {
oneRv.setLayoutManager(new GridLayoutManager(getActivity(), 2));
presenter.getHouse();
}
//内存优化
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
presenter.onDestroy();
presenter = null;
}
@Override
public void onGetHouseSuccess(House house) {
List<House.DataBean> data = house.getData();
RvAdapter adapter = new RvAdapter(data);
oneRv.setAdapter(adapter);
}
}
Adapter
public class RvAdapter extends RecyclerView.Adapter {
private List<House.DataBean> list;
private Context context;
public RvAdapter(List<House.DataBean> list) {
this.list = list;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
context = parent.getContext();
View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
ViewHolder viewHolder = new ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
House.DataBean bean = list.get(position);
ViewHolder viewHolder = (ViewHolder) holder;
viewHolder.itemImg.setImageURI(Uri.parse(bean.getLogo()));
viewHolder.itemTitle.setText(bean.getTitle());
}
@Override
public int getItemCount() {
return list.size();
}
static class ViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.item_img)
SimpleDraweeView itemImg;
@BindView(R.id.item_title)
TextView itemTitle;
ViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
}
}
}
bean
public class House {
/**
* code : 1
* data : [{"id":"1371","catid":"1","catid2":"21","title":"奥斯陆 - 呈现别致的美感","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/54dcd8fb365b3fb1d9ff8cae23eff58d.jpeg","like_number":"0","like_count":"1","comment_count":"0","view_count":"119","hot":"2","creatime":"1533983759","hot_time":"","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1371.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1371.html","check":"1"},{"id":"1370","catid":"2","catid2":"21","title":"库玛室内装饰设计 - 佛山阳光城绿岛湖壹号样板房","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/358e1f2d40193f54348ec70e1ba869f3.jpeg","like_number":"0","like_count":"7","comment_count":"0","view_count":"227","hot":"1","creatime":"1533982339","hot_time":"1534035728","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1370.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1370.html","check":"1"},{"id":"1369","catid":"1","catid2":"24","title":"尚舍生活设计 - 90后的小窝","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/fd474f8250865eeb3ed01e5ce13ed7de.jpeg","like_number":"0","like_count":"2","comment_count":"0","view_count":"170","hot":"1","creatime":"1533981764","hot_time":"1534035731","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1369.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1369.html","check":"1"},{"id":"1368","catid":"1","catid2":"21","title":"A5住宅 - 以色列","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/7b63d8283db55c054b56d85ddfcee36d.jpeg","like_number":"0","like_count":"1","comment_count":"0","view_count":"72","hot":"2","creatime":"1533981305","hot_time":"","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1368.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1368.html","check":"1"},{"id":"1367","catid":"1","catid2":"21","title":"色彩,让设计更精彩!","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/f0b628a1ecbef12205ea7ec1242fd41f.jpeg","like_number":"0","like_count":"1","comment_count":"0","view_count":"91","hot":"2","creatime":"1533980711","hot_time":"","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1367.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1367.html","check":"1"},{"id":"1366","catid":"1","catid2":"21","title":"充满理性和生活化的住宅,永不落幕的经典","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/96e6e0fea5d77aa8bf5a1db025170bed.jpeg","like_number":"0","like_count":"0","comment_count":"0","view_count":"82","hot":"2","creatime":"1533979404","hot_time":"","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1366.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1366.html","check":"1"},{"id":"1365","catid":"4","catid2":"21","title":"毕路德 - 三亚凯悦嘉轩酒店","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/971d20963df860c91e751a492835e924.jpeg","like_number":"0","like_count":"1","comment_count":"0","view_count":"27","hot":"2","creatime":"1533978971","hot_time":"","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1365.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1365.html","check":"1"},{"id":"1364","catid":"1","catid2":"29","title":"会呼吸的红砖墙!南美158㎡民族风透天宅","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/363bdb5b8b76aa968527c4cf8e071ba1.jpeg","like_number":"0","like_count":"0","comment_count":"0","view_count":"47","hot":"2","creatime":"1533977606","hot_time":"","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1364.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1364.html","check":"1"},{"id":"1363","catid":"1","catid2":"21","title":"波兰现代公寓 - Raca Architekci","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/ad264b9824f345712e246313be3e8307.jpeg","like_number":"0","like_count":"3","comment_count":"0","view_count":"70","hot":"2","creatime":"1533977393","hot_time":"","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1363.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1363.html","check":"1"},{"id":"1362","catid":"2","catid2":"21","title":"广州首开龙湖·天奕样板房 - YANG地产新作","type":"1","video_type":"","uid":"100295","lecturer":"无","sign_number":"0","purchase_number":"0","is_charge":"0","is_vip":"0","price":"0","label":"","logo":"https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/1341403cf8c1c2970ab64ea8d5495561.jpeg","like_number":"0","like_count":"1","comment_count":"0","view_count":"76","hot":"2","creatime":"1533977212","hot_time":"","is_del":"0","source":"1","nick_name":"","status":"1","drafts":"0","share_links":"https://app.tuozhe8.com/api.php/api8/share/details/id/1362.html","share_links_new":"https://app.tuozhe8.com/api.php/api8/share/details_new/id/1362.html","check":"1"}]
* message : success
*/
private String code;
private String message;
private List<DataBean> data;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* id : 1371
* catid : 1
* catid2 : 21
* title : 奥斯陆 - 呈现别致的美感
* type : 1
* video_type :
* uid : 100295
* lecturer : 无
* sign_number : 0
* purchase_number : 0
* is_charge : 0
* is_vip : 0
* price : 0
* label :
* logo : https://app.tuozhe8.com/tuozheapp/thumb-artimages/20180811/54dcd8fb365b3fb1d9ff8cae23eff58d.jpeg
* like_number : 0
* like_count : 1
* comment_count : 0
* view_count : 119
* hot : 2
* creatime : 1533983759
* hot_time :
* is_del : 0
* source : 1
* nick_name :
* status : 1
* drafts : 0
* share_links : https://app.tuozhe8.com/api.php/api8/share/details/id/1371.html
* share_links_new : https://app.tuozhe8.com/api.php/api8/share/details_new/id/1371.html
* check : 1
*/
private String id;
private String catid;
private String catid2;
private String title;
private String type;
private String video_type;
private String uid;
private String lecturer;
private String sign_number;
private String purchase_number;
private String is_charge;
private String is_vip;
private String price;
private String label;
private String logo;
private String like_number;
private String like_count;
private String comment_count;
private String view_count;
private String hot;
private String creatime;
private String hot_time;
private String is_del;
private String source;
private String nick_name;
private String status;
private String drafts;
private String share_links;
private String share_links_new;
private String check;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCatid() {
return catid;
}
public void setCatid(String catid) {
this.catid = catid;
}
public String getCatid2() {
return catid2;
}
public void setCatid2(String catid2) {
this.catid2 = catid2;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getVideo_type() {
return video_type;
}
public void setVideo_type(String video_type) {
this.video_type = video_type;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getLecturer() {
return lecturer;
}
public void setLecturer(String lecturer) {
this.lecturer = lecturer;
}
public String getSign_number() {
return sign_number;
}
public void setSign_number(String sign_number) {
this.sign_number = sign_number;
}
public String getPurchase_number() {
return purchase_number;
}
public void setPurchase_number(String purchase_number) {
this.purchase_number = purchase_number;
}
public String getIs_charge() {
return is_charge;
}
public void setIs_charge(String is_charge) {
this.is_charge = is_charge;
}
public String getIs_vip() {
return is_vip;
}
public void setIs_vip(String is_vip) {
this.is_vip = is_vip;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
public String getLike_number() {
return like_number;
}
public void setLike_number(String like_number) {
this.like_number = like_number;
}
public String getLike_count() {
return like_count;
}
public void setLike_count(String like_count) {
this.like_count = like_count;
}
public String getComment_count() {
return comment_count;
}
public void setComment_count(String comment_count) {
this.comment_count = comment_count;
}
public String getView_count() {
return view_count;
}
public void setView_count(String view_count) {
this.view_count = view_count;
}
public String getHot() {
return hot;
}
public void setHot(String hot) {
this.hot = hot;
}
public String getCreatime() {
return creatime;
}
public void setCreatime(String creatime) {
this.creatime = creatime;
}
public String getHot_time() {
return hot_time;
}
public void setHot_time(String hot_time) {
this.hot_time = hot_time;
}
public String getIs_del() {
return is_del;
}
public void setIs_del(String is_del) {
this.is_del = is_del;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getNick_name() {
return nick_name;
}
public void setNick_name(String nick_name) {
this.nick_name = nick_name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDrafts() {
return drafts;
}
public void setDrafts(String drafts) {
this.drafts = drafts;
}
public String getShare_links() {
return share_links;
}
public void setShare_links(String share_links) {
this.share_links = share_links;
}
public String getShare_links_new() {
return share_links_new;
}
public void setShare_links_new(String share_links_new) {
this.share_links_new = share_links_new;
}
public String getCheck() {
return check;
}
public void setCheck(String check) {
this.check = check;
}
}
}