MVP+xRecyclerView+Retrofit+OkHttp++RxJava

Model层


Model

public class Model {
    Context context;

    public Model(Context context) {
        this.context = context;
    }

    public void info(final PresenterInter pre){
        DataManager dataManager=new DataManager(context);
        CompositeSubscription compositeSubscription=new CompositeSubscription();
        compositeSubscription.add(
                //observerble 被观察者
                dataManager.getcall()
                        .subscribeOn(Schedulers.io())
                        .observeOn(AndroidSchedulers.mainThread())
                        //订阅
                        .subscribe(
                                //观察者
                                new Observer<Bean>() {
                                    @Override
                                    public void onCompleted() {
                                        Log.d("xxx", "onCompleted: "+"onCompleted");
                                    }

                                    @Override
                                    public void onError(Throwable e) {

                                    }

                                    @Override
                                    public void onNext(Bean bean) {
                                        Log.d("jiba", "onNext: "+bean.toString());
                                   pre.onSuccessP(bean);
                                    }
                                })
        );
    }
}

P层

DataManager
public class DataManager {
    private ServiceApi mRetrofitService;
    //构造器里获取RetrofitService
    public DataManager(Context context){
        this.mRetrofitService = RetrofitHelper.getInstance(context).getServer();
    }
    //网络请求方法getSearchBooks
    public Observable<Bean> getcall(){
        return mRetrofitService.call();
    }
}


Presenter
public class Presenter implements PresenterInter {

    Model model;
    private ViewInter vi;
    Context context;

    public Presenter(ViewInter vi, Context context) {
        this.vi = vi;
        this.context = context;
        model=new Model(context);
    }


    public void info(){
        model.info(this);
    }

    @Override
    public void onSuccessP(Bean bean) {
         vi.onSuccessV(bean);
    }
}

 
 PresenterInter接口


public interface PresenterInter {
    void onSuccessP(Bean bean);
}
 
RetrofitHelper
public class RetrofitHelper {
    private Context mCntext;
    //初始化
    OkHttpClient client = new OkHttpClient();
    //gson工厂
    GsonConverterFactory factory = GsonConverterFactory.create(new GsonBuilder().create());
    private static RetrofitHelper instance = null;
    private Retrofit mRetrofit = null;
    //单例模式
    public static RetrofitHelper getInstance(Context context){
        if (instance == null){
            instance = new RetrofitHelper(context);
        }
        return instance;
    }
    private RetrofitHelper(Context mContext){
        mCntext = mContext;
        init();
    }

    private void init() {
        resetApp();
    }

    private void resetApp() {
        //初始化retrofit
        mRetrofit = new Retrofit.Builder()
                .baseUrl(Wz.wz)
                .client(client)
                .addConverterFactory(factory)
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
    }
    public ServiceApi getServer(){
        return mRetrofit.create(ServiceApi.class);
    }
}


ServiceApi接口
public interface ServiceApi {
    @GET("ad/getAd")
    Observable<Bean> call();
}
 
 Wz
public class Wz {
    public static String wz="http://120.27.23.105/";
}


V层


ViewInter
public interface ViewInter {
    void  onSuccessV(Bean bean);
}


MainActivity类
public class MainActivity extends AppCompatActivity implements ViewInter{

    private XRecyclerView xre;
    private List<Bean.MiaoshaBean.ListBeanX> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        xre = findViewById(R.id.xre);
        Presenter presenter=new Presenter(this,this);
        presenter.info();


    }

    @Override
    public void onSuccessV(Bean bean) {
        list = bean.getMiaosha().getList();

        MyAdapter adapter=new MyAdapter(list,MainActivity.this);
        GridLayoutManager gridLayoutManager=new GridLayoutManager(MainActivity.this,2,GridLayoutManager.VERTICAL,false);
        xre.setLayoutManager(gridLayoutManager);
        xre.setAdapter(adapter);

    }

    @Override
    protected void onStop() {
        CompositeSubscription compositeSubscription = new CompositeSubscription();
        compositeSubscription.unsubscribe();
        super.onStop();
    }

    @Override
    protected void onDestroy() {

        super.onDestroy();
    }
}


MyAdapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.VHolder>{

    List<Bean.MiaoshaBean.ListBeanX> list;
    Context context;

    public MyAdapter(List<Bean.MiaoshaBean.ListBeanX> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @Override
    public VHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LinearLayout.inflate(context, R.layout.item_layout, null);
        VHolder holder=new VHolder(view);

        return holder;
    }

    @Override
    public void onBindViewHolder(VHolder holder, int position) {
       holder.t.setText(list.get(position).getTitle());
       String[] split = list.get(position).getImages().split("\\|");
        holder.dra.setImageURI(split[0]);
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class VHolder extends RecyclerView.ViewHolder{

        private final TextView t;
        private final SimpleDraweeView dra;

        public VHolder(View itemView) {
            super(itemView);
            dra = itemView.findViewById(R.id.dra);
            t = itemView.findViewById(R.id.t);
        }
    }
}


MyApp
public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}

权限

compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'io.reactivex:rxandroid:1.2.0'
compile 'com.facebook.fresco:fresco:0.12.0'



猜你喜欢

转载自blog.csdn.net/Zyy_921/article/details/79340453