网络接口格式:
http://mnews.gw.com.cn/wap/data/news/xbsjxw/page_1.json
Bean包自己按接口封装
View层
view接口
public interface Show { void getdata(InfoBean infoBean); } 回调接口public interface OnNetListener { void Success(InfoBean infoBean); } Model层MyApp类public class GetdataModel { public void gatdata(String xbsjxw, String page, final OnNetListener onNetListener){ Retrofit retrofit= new Retrofit.Builder() .baseUrl(Api.url) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); ApiService apiService = retrofit.create(ApiService.class); rx.Observable<List<InfoBean>> observable= apiService.GetData(xbsjxw, page); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .flatMap(new Func1<List<InfoBean>, rx.Observable<InfoBean>>() { @Override public rx.Observable<InfoBean> call(List<InfoBean> infoBeen) { return rx.Observable.from(infoBeen); } }).subscribe(new Observer<InfoBean>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(InfoBean infoBean) { onNetListener.Success(infoBean); } }); } }presenter层public class GetPresenter implements OnNetListener { private Show show; private GetdataModel getdataModel; public GetPresenter(Show show) { this.show = show; getdataModel= new GetdataModel(); } public void relevance(String txs,String page){ getdataModel.gatdata(txs,page,this); } @Override public void Success(InfoBean infoBean) { show.getdata(infoBean); } }
清档文件里记得注册public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } } Adapter类public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private List<InfoBean.DataBean> list; private Context context; public MyAdapter(List<InfoBean.DataBean> list, Context context) { this.list = list; this.context = context; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.xrv_item, null); return new MyViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { MyViewHolder myViewHolder = (MyViewHolder) holder; myViewHolder.sdv_xrv.setImageURI(Uri.parse(list.get(position).getImg())); myViewHolder.tv_item_xrv.setText(list.get(position).getTitle()); } @Override public int getItemCount() { return list.size(); } class MyViewHolder extends RecyclerView.ViewHolder { private final SimpleDraweeView sdv_xrv; private final TextView tv_item_xrv; public MyViewHolder(View itemView) { super(itemView); sdv_xrv = itemView.findViewById(R.id.sdv_xrv); tv_item_xrv = itemView.findViewById(R.id.tv_item_xrv); } } }MainActivity主类 也就是你要展示的也面
public class MainActivity extends AppCompatActivity implements Show { private XRecyclerView xrv; private GetPresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xrv= (XRecyclerView) findViewById(R.id.xrv); xrv.setLayoutManager(new LinearLayoutManager(this)); presenter= new GetPresenter(this); presenter.relevance("txs","page_2.json"); } @Override public void getdata(InfoBean infoBean) { List<InfoBean.DataBean> data=infoBean.getData(); Log.i("TAG","getdata:"+data.get(0).getTitle()); MyAdapter myAdapter = new MyAdapter(data, this); xrv.setAdapter(myAdapter); xrv.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { presenter.relevance("txs","page_3.json"); xrv.refreshComplete(); } @Override public void onLoadMore() { xrv.loadMoreComplete(); } }); } } 依赖:compile 'com.jcodecraeer:xrecyclerview:1.3.2' 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.facebook.fresco:fresco:1.5.0' compile 'com.squareup.okio:okio:1.5.0' compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.hjm:BottomTabBar:1.1.1' compile 'com.astuetz:pagerslidingtabstrip:1.0.1' testCompile 'junit:junit:4.12'