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