使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据

来源:互联网 发布:数据挖掘技术及应用 编辑:程序博客网 时间:2024/05/01 03:18

网络接口格式:

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层
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);    }}


MyApp类
清档文件里记得注册
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'





阅读全文
0 0
原创粉丝点击