MVP+Rectrofit+RXJAVA+Fresco

来源:互联网 发布:win10平板优化软件 编辑:程序博客网 时间:2024/05/29 16:30

依赖


compile 'com.squareup.retrofit2:retrofit:2.0.1'compile 'com.squareup.retrofit2:converter-gson:2.0.1'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'compile 'io.reactivex:rxandroid:1.1.0'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.android.support:mediarouter-v7:25.0.0'compile 'com.android.support:appcompat-v7:25.0.0'compile 'com.android.support:recyclerview-v7:25.0.0'compile 'com.facebook.fresco:fresco:0.12.0'compile 'com.facebook.fresco:animated-base-support:0.12.0'


MODEL包里


IMODEL


public interface IModel {    void getJson(String url);}


USERMODEL


public class UserModel implements IModel {    ArrayList<HomeBean.NewslistBean> list;    private OnFinish onFinish;    public interface OnFinish{        void OnFinishListener(ArrayList<HomeBean.NewslistBean> list);    }    public void setOnFinish(OnFinish finish){        this.onFinish=finish;    }    @Override    public void getJson(String url) {        list = new ArrayList<>();        Retrofit retrofit = new Retrofit.Builder().baseUrl(url).addConverterFactory(GsonConverterFactory.create()).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).build();        ApiService apiService = retrofit.create(ApiService.class);        final Observable<HomeBean> home = apiService.getHome();        home.subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Observer<HomeBean>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                    }                    @Override                    public void onNext(HomeBean homeBean) {                        list = (ArrayList<HomeBean.NewslistBean>) homeBean.getNewslist();                        onFinish.OnFinishListener(list);                    }                });    }}


IVIEW


public interface IView {    void getUser(ArrayList<HomeBean.NewslistBean> list);}


UPresenter



public class UserPresenter implements UserModel.OnFinish {    private final IView userView;    private final UserModel userModel;    public UserPresenter(IView userView) {        this.userView = userView;        this.userModel = new UserModel();        userModel.setOnFinish(this);    }    public void setNews(String url){        userModel.getJson(url);    }    @Override    public void OnFinishListener(ArrayList<HomeBean.NewslistBean> list) {        userView.getUser(list);    }}

Main里面


implements IView
UserPresenter userPresenter;


userPresenter = new UserPresenter(this);userPresenter.setNews(API.URLONE);

@Overridepublic void getUser(ArrayList<HomeBean.NewslistBean> list) {    adapter = new MyRecyclerAdapter(list,getActivity());    recycler.setAdapter(adapter);}


APIService


public interface ApiService {    @GET("xbsjxw/page_1.json")    Observable<XwbjBean> getNews();    @GET("tiyu/?key=691dce141baf9b719db22f6382ba5639&num=10")    Observable<HomeBean> getHome();}

API


public class API {    public static final String URL="http://mnews.gw.com.cn/wap/data/news/";    public static final String URLONE = "http://api.tianapi.com/";}



Fresco


布局

<com.facebook.drawee.view.SimpleDraweeView    android:id="@+id/recycler_head"    android:layout_width="90dp"    android:layout_height="90dp"    android:layout_marginTop="15dp"    fresco:actualImageScaleType="centerCrop"    fresco:roundAsCircle="true"    fresco:placeholderImage="@drawable/icon_placeholder"    fresco:placeholderImageScaleType="fitCenter"    fresco:roundingBorderColor="#f8bcf3"    fresco:roundingBorderWidth="5dp"    android:layout_alignParentTop="true"    android:layout_toRightOf="@+id/id_num"    android:layout_alignParentRight="true"    android:layout_alignParentEnd="true" />


使用


SimpleDraweeView head;
head = (SimpleDraweeView) itemView.findViewById(R.id.recycler_head);

Uri imageuri = Uri.parse(list.get(position).getPicUrl());((MyViewHolder)holder).head.setImageURI(imageuri);
原创粉丝点击