MVP+RxJava+Retrofit

来源:互联网 发布:天涯明月刀心法数据 编辑:程序博客网 时间:2024/06/05 14:15

View  接口

package com.example.snmsung.jddemo.View;import com.example.snmsung.jddemo.Bean.MyBean1;import com.example.snmsung.jddemo.Bean.MyBean2;import java.util.List;/** * Created by SNMSUNG on 2017/11/28. */public interface IbanView {    void showMovie(List<MyBean1.DataBean> list1);    void  shshow12(List<MyBean1.MiaoshaBean.ListBeanX> list12);}
Moder   接口

package com.example.snmsung.jddemo.Model;import com.example.snmsung.jddemo.Bean.MyBean1;import com.example.snmsung.jddemo.Bean.MyBean2;import java.util.List;/** * Created by SNMSUNG on 2017/11/28. */public interface lHome {    void showData1(MoVie moVie);    interface MoVie {        void complete(List<MyBean1.DataBean> list1);    }    void showData12(MoVie12 moVie12);    interface MoVie12 {        void complete(List<MyBean1.MiaoshaBean.ListBeanX> list12);    }}

Utlis   工具类


package com.example.snmsung.jddemo.utils;import com.example.snmsung.jddemo.Bean.MyBean1;import okhttp3.OkHttpClient;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import retrofit2.http.GET;import rx.Observable;/** * Created by SNMSUNG on 2017/11/28. */public interface ApiService {    @GET("ad/getAd")    Observable<MyBean1> getData();    Retrofit RETROFIT=new Retrofit.Builder()            .baseUrl("http://120.27.23.105/")            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())            .addConverterFactory(GsonConverterFactory.create())            .build();    ApiService API_SERVICE = RETROFIT.create(ApiService.class);}

Moder  类

package com.example.snmsung.jddemo.Model;import android.util.AndroidException;import android.util.Log;import com.example.snmsung.jddemo.Bean.MyBean1;import com.example.snmsung.jddemo.Bean.MyBean2;import com.example.snmsung.jddemo.utils.ApiService;import com.example.snmsung.jddemo.utils.ApiService2;import java.util.List;import javax.security.auth.login.LoginException;import javax.xml.validation.SchemaFactory;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;import retrofit2.http.GET;import rx.Observer;import rx.Scheduler;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;/** * Created by SNMSUNG on 2017/11/28. */public class Home_Model implements lHome {    @Override    public void showData1(final MoVie moVie) {        ApiService.API_SERVICE.getData()                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Observer<MyBean1>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                    }                    @Override                    public void onNext(MyBean1 myBean1) {                        List<MyBean1.DataBean> myBean1Data = myBean1.getData();                        moVie.complete(myBean1Data);                    }                });    }    @Override    public void showData12(final MoVie12 moVie12) {        ApiService.API_SERVICE.getData()                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Observer<MyBean1>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                    }                    @Override                    public void onNext(MyBean1 myBean1) {                        List<MyBean1.MiaoshaBean.ListBeanX> miaosha = myBean1.getMiaosha().getList();                        Log.i("0000000", "onNext: "+miaosha);                        moVie12.complete(miaosha);                    }                });    }}

IPersenter   泛型

package com.example.snmsung.jddemo.Presenter;/** * Created by SNMSUNG on 2017/11/29. */public interface IPresenter<T> {    void  attcch(T  view);    void  datach();}


Baseactivity    基类

package com.example.snmsung.jddemo.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import com.example.snmsung.jddemo.Presenter.IPresenter;/** * Created by SNMSUNG on 2017/11/29. */public abstract class BaseFragment <T extends IPresenter> extends Fragment{    T presenter;    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        createpresenter();    }    protected abstract void createpresenter();    @Override    public void onDestroy() {        super.onDestroy();        if (presenter!=null){            presenter.datach();        }    }}

Persemter 层

package com.example.snmsung.jddemo.Presenter;import android.util.Log;import com.example.snmsung.jddemo.Bean.MyBean1;import com.example.snmsung.jddemo.Bean.MyBean2;import com.example.snmsung.jddemo.Model.Home_Model;import com.example.snmsung.jddemo.Model.lHome;import com.example.snmsung.jddemo.View.IbanView;import com.example.snmsung.jddemo.fragment.Fragment1;import java.lang.ref.SoftReference;import java.lang.reflect.Method;import java.util.List;/** * Created by SNMSUNG on 2017/11/29. */public class PresenterMovie implements IPresenter<IbanView> {    lHome model;    SoftReference<IbanView> softReference;    public PresenterMovie(IbanView view) {        attcch(view);        model = new Home_Model();    }    public void showData() {        model.showData1(new lHome.MoVie() {            @Override            public void complete(List<MyBean1.DataBean> list1) {                softReference.get().showMovie(list1);            }        });    }  public  void  showData12(){        model.showData12(new lHome.MoVie12() {            @Override            public void complete(List<MyBean1.MiaoshaBean.ListBeanX> list12) {                Log.i("55555555", "complete: "+list12);                softReference.get().shshow12(list12);            }        });    }    @Override    public void attcch(IbanView view) {        softReference = new SoftReference<>(view);    }    @Override    public void datach() {        softReference.clear();    }}
 

Fragment 实现



package com.example.snmsung.jddemo.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.StaggeredGridLayoutManager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.ViewFlipper;import com.example.snmsung.jddemo.Adapter.MyAdapter;import com.example.snmsung.jddemo.Adapter.MyAdapter2;import com.example.snmsung.jddemo.Bean.MyBean1;import com.example.snmsung.jddemo.ImagGithub.ImgGithub;import com.example.snmsung.jddemo.Presenter.PresenterMovie;import com.example.snmsung.jddemo.R;import com.example.snmsung.jddemo.View.IbanView;import com.youth.banner.Banner;import java.util.ArrayList;import java.util.List;import butterknife.BindView;import butterknife.ButterKnife;import butterknife.Unbinder;/** * Created by SNMSUNG on 2017/11/28. */public class Fragment1 extends BaseFragment<PresenterMovie> implements IbanView {    @BindView(R.id.banner)    Banner banner;    @BindView(R.id.rec)    RecyclerView rec;    Unbinder unbinder;    PresenterMovie presenter;    List<String> list;    @BindView(R.id.vp1)    ViewPager vp1;    List<Fragment> list_f1;    @BindView(R.id.img1)    ImageView img1;    private Vppager1 vppager1;    //全局变量    List<MyBean1.MiaoshaBean.ListBeanX> list_miao;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {        View view = View.inflate(getActivity(), R.layout.fragment1, null);        unbinder = ButterKnife.bind(this, view);        presenter.showData();        presenter.showData12();        addFragment();        //找到跑马灯控件        ViewFlipper vf = (ViewFlipper) view.findViewById(R.id.vf);        //加载跑马灯的布局        vf.addView(View.inflate(getActivity(), R.layout.item_paomadeng, null));        rec.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));        return view;    }    @Override    public void showMovie(List<MyBean1.DataBean> bean) {        list = new ArrayList<>();        for (int i = 0; i < bean.size(); i++) {            list.add(bean.get(i).getIcon());        }        banner.setImageLoader(new ImgGithub());        banner.setImages(list);        banner.start();    }    @Override    public void shshow12(List<MyBean1.MiaoshaBean.ListBeanX> list12) {        Log.i("****asdf****", "shshow12: " + list12);        list_miao=new ArrayList<>();        for (int i = 0; i < 12; i++) {            MyBean1.MiaoshaBean.ListBeanX listBeanX = list12.get(i);            list_miao.add(listBeanX);        }        MyAdapter myAdapter = new MyAdapter(getActivity(), list_miao);        rec.setAdapter(myAdapter);    }    private void addFragment() {        list_f1 = new ArrayList<>();        list_f1.add(new Fragment_vp1());        list_f1.add(new Fragment_vp2());        vppager1 = new Vppager1(getActivity().getSupportFragmentManager());        vp1.setAdapter(vppager1);    }    @Override    protected void createpresenter() {        presenter = new PresenterMovie(this);    }    @Override    public void onDestroyView() {        super.onDestroyView();        unbinder.unbind();    }    public class Vppager1 extends FragmentPagerAdapter {        public Vppager1(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return list_f1.get(position);        }        @Override        public int getCount() {            return list_f1.size();        }    }}

原创粉丝点击