Model层
public interface Imodel { void RequestSuccess(String url); }
public class Model implements Imodel { private List<News.SongListBean> list = new ArrayList<>(); OnFinish onFinish; public interface OnFinish{ void OnFinshListener(List<News.SongListBean> list); } public void setOnFinish(OnFinish onFinish){ this.onFinish = onFinish; } @Override public void RequestSuccess(String url) { OkHttpClient client = new OkHttpClient .Builder() .addInterceptor(new LoggingInterceptor()) .build(); Retrofit retrofit = new Retrofit .Builder() .baseUrl(API.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .client(client) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class); final Observable<News> bean = apiService.getSong_list(); bean.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<News>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(News news) { List<News.SongListBean> bean = news.getSong_list(); onFinish.OnFinshListener(bean); } }); } } View层public interface Iview { void showSuccess(List<News.SongListBean> list); void showError(String r); }Presenter层在MainActivity中继承View层,两个方法public class Presenter implements Model.OnFinish { Iview iview; Model model; public Presenter(Iview iview) { this.iview = iview; this.model = new Model(); model.setOnFinish(this); } public void getUrl(String url){ model.RequestSuccess(url); } @Override public void OnFinshListener(List<News.SongListBean> list) { iview.showSuccess(list); } }API
public class API { public static final String BASE_URL="http://tingapi.ting.baidu.com/v1/restserver/"; }public interface ApiService { @GET("ting?method=baidu.ting.billboard.billList&type=1&size=10&offset=0") Observable<News> getSong_list(); }
在onCreate方法中实例化Presenter方法@Override public void showSuccess(List<News.SongListBean> list) { manager = new LinearLayoutManager(this); //显示方式 recyclerView.setLayoutManager(manager); //与recyclerview绑定 myAdapter = new MyAdapter(list,MainActivity.this); //适配器 recyclerView.setAdapter(myAdapter); } @Override public void showError(String r) { }
拦截器public class LoggingInterceptor implements Interceptor { private static final String UA = "User-Agent"; @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request() .newBuilder() .addHeader(UA, makeUA()) .build(); return chain.proceed(request); } private String makeUA() { String s = Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE; return Build.BRAND + "/" + Build.MODEL + "/" + Build.VERSION.RELEASE; } }