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(); } }}
阅读全文
0 0
- MVP+Dagger2+Retrofit+Rxjava
- Retrofit实践(MVP+RxJava)
- Rxjava+MVP+Retrofit强强联合
- MVP、Retrofit、RxJava、RxBus
- Rxjava+retrofit+mvp整合
- MVP+retrofit+rxjava
- Android MVP +Retrofit+RxJava
- 最新Retrofit + RxJava + MVP
- MVP+Retrofit+Rxjava实战
- RxJava+Retrofit+MVP+Dagger2
- MVP+Retrofit+RxJava
- Retrofit+RxJava+Fresco+MVP
- MVP+Retrofit+RxJava
- MVP+RxJava+Retrofit
- MVP&Retrofit&RXjava
- MVP +Retrofit +Rxjava 请求
- RxJava+Retrofit+OkHttp+mvp
- mvp+rxjava+retrofit+okhttp
- TLS
- 20171130学习笔记之DDL、DML和DCL之见的区别
- 自定义view画太极图
- QT之插件Plugin生成与使用
- 利用Python进行数据分析(二)
- MVP+RxJava+Retrofit
- java之String v_1.0.1
- 找出数组中出现一次的三个数,其他数都出现两次
- 这不是赶鸭子上架么
- 设计开发前的产品原型图
- PLSQL之批量导数据
- Smallest Difference (穷竭搜索)
- TCP 文件服务器 (将服务器上的文件全部发给客户端)示例代码
- 模板的分离编译