MVP+Fresco+RxJava

我们先来看一下我们需要的依赖:
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'io.reactivex.rxjava2:rxjava:2.1.6'
    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
    implementation 'com.facebook.fresco:fresco:0.11.0'
在这中间还有RecyclerView的依赖。
现在我们来看一下model层:
import com.honey.mvpmvp.app.App;
import okhttp3.Callback;
import xp.code.okhttp3.utils.OkHttp3Utils;
public class NewModel implements IModel{
    @Override
    public void getData(Callback callback) {
        OkHttp3Utils.doPost(App.URL_POST,null,null,callback);
    }
}
model层的接口:
import okhttp3.Callback;
public interface IModel {
    //获取数据
    void getData(Callback callback);
}

p层:
import android.content.Context;
import android.util.Log;
import com.google.gson.Gson;
import com.honey.mvpmvp.entity.EntityNews;
import com.honey.mvpmvp.model.NewModel;
import com.honey.mvpmvp.view.IView;
import java.io.IOException;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public class NewsPresenter {
    private Context context;
    private NewModel model;
    private IView view;
    public NewsPresenter(Context context,IView view) {
        this.context = context;
        this.model = new NewModel();
        this.view = view;
    }
    public void getDataOK(){
        Observable.create(new ObservableOnSubscribe<List<EntityNews.ResultBean.DataBean>>() {
            @Override
            public void subscribe(final ObservableEmitter<List<EntityNews.ResultBean.DataBean>> e) throws Exception {
                model.getData(new Callback() {
                    @Override
                    public void onFailure(Call call, IOException e) {

                    }
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        String string = response.body().string();
                        Gson gson=new Gson();
                        EntityNews entityNews = gson.fromJson(string, EntityNews.class);
                        List<EntityNews.ResultBean.DataBean> data = entityNews.getResult().getData();
                        e.onNext(data);//将集合传给观察者的onnext方法,是数据回到主线程
                        e.onComplete();//关闭
                    }
                });
            }
        }).subscribeOn(Schedulers.io())//子线程
          .observeOn(AndroidSchedulers.mainThread())//主
          .subscribe(new Observer<List<EntityNews.ResultBean.DataBean>>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                    }
                    @Override
                    public void onNext(List<EntityNews.ResultBean.DataBean> dataBeans) {
                        Log.i("==dataBeans==", dataBeans+"");
                        //做view层的操作,将集合的返回的类型给view层展示
                        view.showData(dataBeans);
                    }
                    @Override
                    public void onError(Throwable e) {
                    }
                    @Override
                    public void onComplete() {
                    }
          });
    }
}
v层的接口:
import com.honey.mvpmvp.entity.EntityNews;
import java.util.List;
public interface IView {
    void showData(List<EntityNews.ResultBean.DataBean> dataList);
}

MainActivity中的数据代码:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import com.honey.mvpmvp.adapter.RecyclerViewAdapter;
import com.honey.mvpmvp.entity.EntityNews;
import com.honey.mvpmvp.presenter.NewsPresenter;
import com.honey.mvpmvp.view.IView;

import java.util.List;

public class MainActivity extends AppCompatActivity implements IView{
    private RecyclerView recyclerView;
    private RecyclerViewAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        initView();
        //new一个p层的对象
        NewsPresenter presenter=new NewsPresenter(MainActivity.this,this);
        //p层对象调用p层网络请求的数据
        presenter.getDataOK();
    }
    /**
     * 获取控件
     */
    private void initView() {
        recyclerView=findViewById(R.id.recyclerView);
        //RecyclerView的管理
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
        recyclerView.setLayoutManager(linearLayoutManager);
    }
    @Override
    public void showData(List<EntityNews.ResultBean.DataBean> dataList) {
        Log.i("==dataList==",dataList.size()+" ");
        adapter = new RecyclerViewAdapter(MainActivity.this,dataList);
        recyclerView.setAdapter(adapter);
    }
}
剩下就是bean类、app、适配器中的代码了。记得要添加网络权限!











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值