MVP+RXJava+Retryfit使用post解析

//   retrofit2
    compile 'com.squareup.retrofit2:retrofit:2.0.1'
    compile 'com.squareup.retrofit2:converter-gson:2.0.1'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'
    compile 'io.reactivex:rxandroid:1.1.0'
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
//fresco
    compile 'com.facebook.fresco:fresco:0.14.1'
    //banner
    compile 'com.youth.banner:banner:1.4.9'
//    glide
    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.jakewharton:butterknife:7.0.1'



public interface Iview { //获取请求好的数据 void getShowData(MovieBean movieBean);}


public class Api {

    public static final String BASE_URL="http://api.svipmovie.com/front/";

}



public interface ApiService {

    @FormUrlEncoded
    @POST("columns/getVideoList.do")
    Observable<MovieBean> getMovieData(@Field("catalogId") String catalogId, @Field("pnum") String pnum);


}



public interface Imodel {
    //请求网路数据
    void getHttpData(String url, String catalogId, String pnum);

}



public class HttpModel implements Imodel{

    public static final String TAG="HttpModel";

    private OnFinish onFinish;
    //定义接口
    public interface OnFinish{
        void OnFinishListener(MovieBean movieBean);
    }

    public void setOnFinish(OnFinish finish){
        this.onFinish=finish;
    }


    @Override
    public void getHttpData(String url,String catalogId,String pnum) {

        Retrofit retrofit = new Retrofit.Builder().baseUrl(url)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        //动态代理得到网络接口
        ApiService apiService = retrofit.create(ApiService.class);

        rx.Observable<MovieBean> movieData = apiService.getMovieData(catalogId,pnum);

        movieData.subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<MovieBean>() {
                @Override
                public void onCompleted() {
                    Log.d(TAG, "onCompleted: ");
                }

                @Override
                public void onError(Throwable e) {
                    Log.d(TAG, "onError: ");
                    e.printStackTrace();
                }

                @Override
                public void onNext(MovieBean movieBean) {
                    Log.d(TAG, "onNext: "+movieBean.getCode()+"========="+movieBean.getMsg());

                    onFinish.OnFinishListener(movieBean);
                }
            });
    }
}





public class MyPresenter implements HttpModel.OnFinish{


    //定义view和model接口的变量
    private final Iview iview;
    private final HttpModel httpModel;

    public MyPresenter(Iview iview) {
        this.iview = iview;
        this.httpModel = new HttpModel();
        httpModel.setOnFinish(this);
    }
    //传值到model中
    public void setMovieData(String url,String catalogId,String pnum){
        httpModel.getHttpData(url,catalogId,pnum);
    }

    @Override
    public void OnFinishListener(MovieBean movieBean) {
        //将数据传给iview的实现类
        iview.getShowData(movieBean);
    }
}



public class GlideImageLoader extends ImageLoader{
//    @Override
//    public void displayImage(Context context, Object path, ImageView imageView) {
//
//        Uri uri = Uri.parse((String) path);
//        imageView.setImageURI(uri);
//    }
    @Override
    public void displayImage(Context context, Object path, ImageView imageView) {
        Glide.with(context).load(path).into(imageView);
    }

}



public class MyApp extends Application{


    @Override
    public void onCreate() {
        super.onCreate();
        //初始化fresco
        Fresco.initialize(this);
    }
}



public class MainActivity extends AppCompatActivity implements Iview{

    @Bind(R.id.banner)
    Banner banner;
    @Bind(R.id.changePic)
    Button changePic;
    final String catalogId = "402834815584e463015584e539330016";
    private List<String> imageTitle;
    private List<String> imageArray;
    private int randomNumber;
    private MyPresenter myPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        myPresenter = new MyPresenter(this);
        myPresenter.setMovieData(Api.BASE_URL, catalogId, randomNumber + "");
    }
    //随机数
    public static int getRandomNumber(int min, int max) {
        return new Random().nextInt(max) % (max - min + 1) + min;
    }
    @Override
    public void getShowData(MovieBean movieBean) {
        //设置图片加载集合
        imageArray = new ArrayList<>();
        //设置图片标题集合
        imageTitle=new ArrayList<>();
//        for (int i=0;i<movieBean.getRet().getList().size();i++){
//            imageArray.add(movieBean.getRet().getList().get(i).getPic().toString());
//            imageTitle.add(movieBean.getRet().getList().get(0).getTitle());
//            Log.d("main", "getShowData: "+imageArray.get(i).toString());
//        }

//        //设置图片加载集合
//        imageArray=new ArrayList<>();

//        imageArray.add("http://img3.imgtn.bdimg.com/it/u=2758743658,581437775&fm=15&gp=0.jpg");
//        imageArray.add("http://img3.imgtn.bdimg.com/it/u=2105877023,3759180926&fm=15&gp=0.jpg");
//        imageArray.add("http://img2.imgtn.bdimg.com/it/u=1876814088,3589919070&fm=15&gp=0.jpg");
        imageArray.add(movieBean.getRet().getList().get(0).getPic());
        imageArray.add(movieBean.getRet().getList().get(1).getPic());
        imageArray.add(movieBean.getRet().getList().get(2).getPic());
        imageArray.add(movieBean.getRet().getList().get(3).getPic());
        imageArray.add(movieBean.getRet().getList().get(4).getPic());
        imageArray.add(movieBean.getRet().getList().get(5).getPic());

        imageTitle.add(movieBean.getRet().getList().get(0).getTitle());
        imageTitle.add(movieBean.getRet().getList().get(1).getTitle());
        imageTitle.add(movieBean.getRet().getList().get(2).getTitle());
        imageTitle.add(movieBean.getRet().getList().get(3).getTitle());
        imageTitle.add(movieBean.getRet().getList().get(4).getTitle());
        imageTitle.add(movieBean.getRet().getList().get(5).getTitle());


        //设置banner样式
        banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
        //设置图片加载器
        banner.setImageLoader(new GlideImageLoader());
        //设置图片集合
        banner.setImages(imageArray);
        //设置banner动画效果
        banner.setBannerAnimation(Transformer.RotateDown);
        //设置标题集合(当banner样式有显示title时)
        banner.setBannerTitles(imageTitle);
        banner.isAutoPlay(false);
        //设置轮播时间
        banner.setDelayTime(1500);
        //设置指示器位置(当banner模式中有指示器时)
        banner.setIndicatorGravity(BannerConfig.CENTER);
        //banner设置方法全部调用完毕时最后调用
        banner.start();
    }
    @OnClick({R.id.banner, R.id.changePic})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.banner:

                break;
            case R.id.changePic:
                //生成随机数
                randomNumber = getRandomNumber(1, 108);
                break;
        }
    }
}



主页面布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.lx_201720171121_2.MainActivity">

    <com.youth.banner.Banner
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/banner"
        android:layout_width="match_parent"
        android:layout_height="430dp" />
    <Button
        android:layout_marginTop="15dp"
        android:id="@+id/changePic"
        android:layout_gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="换一换" />

</LinearLayout>



在values文件下创建dimens
<resources>
    <!-- Default screen margins, per the Android Design guidelines. -->
    <dimen name="activity_horizontal_margin">16dp</dimen>
    <dimen name="activity_vertical_margin">16dp</dimen>
</resources>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值