// 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>
MVP+RXJava+Retryfit使用post解析
最新推荐文章于 2022-04-15 20:42:38 发布