依赖
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);
@Override public 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);