MVP+RxJava+Retrofit

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();
        }
    }


}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值