MVP结合RecycleView,利用retrofit与RxJava简单请求数据
来源:互联网 发布:坐标系平移变换矩阵 编辑:程序博客网 时间:2024/05/23 12:05
这只是一个小Demo,仅供参考,步骤如下:
先将依赖导入,需要的依赖:
compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.1.7' compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0' compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4' compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' compile 'com.jakewharton:butterknife:7.0.0' compile 'com.facebook.fresco:fresco:0.14.1'
简单的布一下局:
activity_main:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.RecyclerView android:id="@+id/recycleview" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>
item_layout:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:fresco="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/simple" fresco:roundAsCircle="true" android:layout_width="120dp" android:layout_height="120dp" /> <TextView android:id="@+id/text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
接口:
APIKEY=‘71e58b5b2f930eaf1f937407acde08fe’http://api.tianapi.com/nba/?key=APIKEY&num=10
主页面代码:
MainActivity:
import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import com.bawei.guolei.guolei2017126.adapter.IAdapter;import com.bawei.guolei.guolei2017126.presenter.MainPresenter;import com.bawei.guolei.guolei2017126.view.MainView;import butterknife.Bind;import butterknife.ButterKnife;public class MainActivity extends AppCompatActivity implements MainView{ @Bind(R.id.recycleview) RecyclerView recycleview; private MainPresenter presenter; private IAdapter adapter; private LinearLayoutManager manager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); presenter = new MainPresenter(this); presenter.get(); adapter = new IAdapter(this); manager = new LinearLayoutManager(this); recycleview.setLayoutManager(manager); recycleview.setAdapter(adapter); } @Override public void success(Bean bean) { adapter.addData(bean); } @Override public void failure(Exception e) { }}
适配器:adapter
IAdapter:
import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import com.bawei.guolei.guolei2017126.Bean;import com.bawei.guolei.guolei2017126.R;import com.facebook.drawee.view.SimpleDraweeView;import java.util.ArrayList;import java.util.List;import butterknife.Bind;import butterknife.ButterKnife;/** * Created by Lenovo on 2017/12/6. */public class IAdapter extends RecyclerView.Adapter<IAdapter.ViewHolder> { private Context context; private List<Bean.NewslistBean> list; public IAdapter(Context context) { this.context=context; } public void addData(Bean bean) { if (list==null){ list = new ArrayList<>(); } list.addAll(bean.getNewslist()); notifyDataSetChanged(); } @Override public IAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.item_layout, null); return new ViewHolder(view); } @Override public void onBindViewHolder(IAdapter.ViewHolder holder, int position) { holder.simple.setImageURI(list.get(position).getPicUrl()); holder.textView.setText(list.get(position).getTitle()); } @Override public int getItemCount() { return list==null?0:list.size(); } static class ViewHolder extends RecyclerView.ViewHolder{ @Bind(R.id.simple) SimpleDraweeView simple; @Bind(R.id.text_view) TextView textView; public ViewHolder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } }}
数据引用接口:
IGetDataBase:
import io.reactivex.Observable;import retrofit2.http.GET;import retrofit2.http.Query;/** * Created by Lenovo on 2017/12/6. */public interface IGetDataBase { @GET("/nba") Observable<Bean> get(@Query("key") String key, @Query("num") String num);}
IApplication:
import android.app.Application;import com.facebook.drawee.backends.pipeline.Fresco;import retrofit2.Retrofit;import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;/** * Created by Lenovo on 2017/12/6. */public class IApplication extends Application { public static IGetDataBase iGetDataBase; @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); Retrofit retrofit=new Retrofit.Builder() .baseUrl("http://api.tianapi.com") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .build(); iGetDataBase = retrofit.create(IGetDataBase.class); }}
MVP三层分类:
M层:MainModel:
import com.bawei.guolei.guolei2017126.Bean;import com.bawei.guolei.guolei2017126.IApplication;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.functions.Consumer;import io.reactivex.schedulers.Schedulers;/** * Created by Lenovo on 2017/12/6. */public class MainModel { public void getData(final ModelCallBack callBack){ IApplication.iGetDataBase.get("71e58b5b2f930eaf1f937407acde08fe","10") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Bean>() { @Override public void accept(Bean bean) throws Exception { callBack.success(bean); } }); }}
M层接口:
ModelCallBack:
import com.bawei.guolei.guolei2017126.Bean;/** * Created by Lenovo on 2017/12/6. */public interface ModelCallBack { public void success(Bean bean); public void failure(Exception e);}
V层接口:
MainView:
import com.bawei.guolei.guolei2017126.Bean;/** * Created by Lenovo on 2017/12/6. */public interface MainView { public void success(Bean bean); public void failure(Exception e);}
P层:MainPresenter:
import com.bawei.guolei.guolei2017126.Bean;import com.bawei.guolei.guolei2017126.model.MainModel;import com.bawei.guolei.guolei2017126.model.ModelCallBack;import com.bawei.guolei.guolei2017126.view.MainView;/** * Created by Lenovo on 2017/12/6. */public class MainPresenter { private MainView iView; private MainModel mainModel; public MainPresenter(MainView view){ this.iView=view; this.mainModel=new MainModel(); } public void get(){ mainModel.getData(new ModelCallBack() { @Override public void success(Bean bean) { if (iView!=null){ iView.success(bean); } } @Override public void failure(Exception e) { if (iView!=null){ iView.failure(e); } } }); }}
效果如下:
阅读全文
0 0
- MVP结合RecycleView,利用retrofit与RxJava简单请求数据
- Retrofit+RxJava+Okhttp+RecycleView+MVP简单的展示数据
- fragment联动与RecycleView请求数据(包含retrofit,Fresco,EventBus与GreenDao结合MVP)
- MVP和Retrofit+Rxjava+OkHttp封装结合请求数据
- 简单的MVP+Retrofit+RxJava请求网络数据(一)
- RxJava与Retrofit 结合请求后台数据并解析
- MVP+Rxjava+Okhttp+Retrofit+XRecyclerview请求数据
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- MVP +Retrofit +Rxjava 请求
- RxJava结合Retrofit使用 自定义封装类结合泛型 请求网络数据+Fresco+RecyclerView+MVP分层
- 浅谈Android MVP设计模式(简单结合RxJava+Retrofit)
- 使用MVP框架,retrofit结合Rxjava以及fresco加载图片,用recycleview实现
- MVP架构下Android的Rxjava与Retrofit 结合
- MVP框架使用Retrofit+Rxjava请求网络数据
- MVP+retrofit和Rxjava请求数据+recyclerview展示
- Retrofit与Rxjava结合
- MVP+Retrofit+RxJava简单事例
- 简单MVP-Retrofit-Rxjava-OKhttp
- C# winForm读取配置文件 App.config
- C++性能系列之const使用心得
- 备忘录
- java线程池
- Datatables通过某列元素操作获取该行数据
- MVP结合RecycleView,利用retrofit与RxJava简单请求数据
- 当前时间的后一天
- 随机森林手写数字识别
- 跟我一起学JFinal系列一JFinal开发环境搭建
- (安卓) MVP 框架 (Rxjava2+Retrofit)结合 实现网络请求
- iphone黑屏转圈输入密码解锁问题的解决
- Git忽略规则.gitignore梳理
- 欢迎使用CSDN-markdown编辑器
- 01按照官方步骤编译NanoPiM1Plus的Android(分色排版)V1.0