使用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层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'
阅读全文
0 0
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- Retrofit+RxJava+Fresco图片加载框 请求网络数据
- Rxjava观察者模式+Retrofit请求GSON数据+Fresco处理图片+Xrecyclerview展示数据+MVP模式
- 使用MVP模式+Retrofit+Fresco加载网络数据
- Kotlin新语言使用RxJava+Retrofit请求网络数据+lambda表达式+RecyclerView展示+Glide展示图片
- RxJava结合Retrofit使用 自定义封装类结合泛型 请求网络数据+Fresco+RecyclerView+MVP分层
- MVP实现用Retrofit请求网络数据Fresco加载图片,Recyclerview CheckBox显示并实现全选删除
- MVP框架使用Retrofit+Rxjava请求网络数据
- mvp,retrofit请求;listview,fresco展示图片
- MVP框架+RXJava+reftorfit请求网络数据+XRecycleView多条目展示(banner轮播+条目展示、刷新加载)、点击事件+fresco图片加载
- 使用MVP框架,retrofit结合Rxjava以及fresco加载图片,用recycleview实现
- Retrofit网络请求+Recyclerview展示数据+Fresco显示图片
- Retrofit网络请求+Recyclerview展示数据+Fresco显示图片
- Android MVP框架+RxJava+Retrofit+cecycleView,请求网络数据并加载
- android+MVP+Retrofit+RxJava做网络请求
- RecyclleView使用RxJava与Retrofit网络加载Fresco
- Fresco图片加载+Eventbus跳转传值+Retrofit请求数据+GreenDao操作数据+Mvp分层+RecyclerView展示数据+ButtonKnife生成控件
- AngularJs之路由配置(二)
- Linux系统下Tomcat的安装
- CSS3 经典教程系列:CSS3 线性渐变(linear-gradient)
- 易语言编译的区别
- C#实现Zip文件解压
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- 连续帧图片转视频
- 【云星数据---mesos实战系列003】:marathon实战005--marathon部署一套pyhton3的web程序
- 多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念
- 网络七层协议
- CPU的组成结构及其原理(一)
- 搜索排序插件语言的选择
- QQ在线客服设置-QQ开启临时会话教程
- div里面的文字自动转行