MVP+RXJava+Retryfit使用post解析
来源:互联网 发布:聊天套路知乎 编辑:程序博客网 时间:2024/06/07 12:40
// 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
- MVP+RXJava+Retryfit使用post解析
- MVP+RxJava+Retryfit+RecyclerView多条目展示
- MVP+Rxjava+Retryfit+分页加载+RecyclerView展示,解析以集合开头的json数据
- MVP+Rxjava+Retryfit+分页加载+RecyclerView展示,解析以集合开头的json数据
- MVP+Retrofit+RxJava 使用
- 使用rxjava,retrofit,okhttp实现mvp模式的数据解析
- MVP+RxJava+Retrofit使用GET解析拼参数
- MVP中RxJava的使用
- MVP+Retrofit+RxJava组合使用
- MVP+Rxjava+Retrofit的使用
- Retrofit+RxJava+MVP模式使用
- RxJava+MVP
- Mvp-Rxjava
- Android中的RxJava,Retrofit,MVP的使用
- 使用Rxjava的MVP架构实现
- Retrofit2.0+RxJava+MVP+Bmob的使用
- 优雅的使用MVP+RxJava+Retrofit框架
- MVP+retrofit+rxjava+Knife的简单使用
- 经纬图转鱼眼图像
- jquery中push(),unshift(),splice() ,concat(),pop(),shift(),slice()等的用法(数组添加元素)
- 1.java web--动态web
- java程序员从笨鸟到菜鸟之(三十三)异常之浅谈
- 关于Ubuntu的sources.list 的总结
- MVP+RXJava+Retryfit使用post解析
- one class classifier
- 李开复:如何在一定效率下充分地利用时间来提高才华
- for
- Java并发学习之线程状态及Thread常用方法详解
- winpcap抓取包
- mui上拉加载通过ajax获取数据,实现分页
- echarts 的Can't get dom width or height 坑
- 树、森林与二叉树的转换