有关Rxjava和retrofit

先导包:
compile 'io.reactivex.rxjava2:rxjava:2.1.0'
    compile 'com.google.code.gson:gson:2.8.0'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
    compile 'com.github.bumptech.glide:glide:4.0.0-RC0'
    compile 'com.bigkoo:convenientbanner:2.0.5'


//创建Bean类
//创建Bean的观察者接口ApiBean

public interface ApiTom {

    //http://news-at.zhihu.com/api/4/news/latest

    //https://api.douban.com/v2/movie/top250?start=0&count=10


    @GET("latest")
    Observable<TomBean> getTomBean();//注意导包

   // @GET("top250")
   // Observable<TomBean> getTomBean(@Query("start") int start,@Query("count") int count);

}

//在MainActivity中:
public class MainActivity extends AppCompatActivity {

    private String url="http://news-at.zhihu.com/api/4/news/";
    private ConvenientBanner convenientBannerb;
    private List<TomBean.StoriesBean> list=new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        convenientBannerb = (ConvenientBanner) findViewById(R.id.cb);

        getTom();
    }


    private void getTom()
    {

        //请求框架
        Retrofit retrofit=new Retrofit.Builder()
                .baseUrl(url)
                .addConverterFactory(GsonConverterFactory.create())//支持gson解析
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();

        //动态代理    被观察者
        ApiTom apiTom = retrofit.create(ApiTom.class);

        apiTom.getTomBean()
                .subscribeOn(Schedulers.io())  //设置事件触发在非主线程
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<TomBean>() {
                    @Override
                    public void onSubscribe(@NonNull Disposable d) {
                         //解除订阅  Disposable相当于Rxjava中的subscrib
                    }

                    @Override
                    public void onNext(@NonNull TomBean tomBean) {
                        list.addAll( tomBean.getStories());
                    }

                    @Override
                    public void onError(@NonNull Throwable e) {

                    }

                    @Override
                    public void onComplete() {
                        convenientBannerb.setPages(new CBViewHolderCreator() {
                            @Override
                            public Object createHolder() {
                                return new MyViewHolder();
                            }
                        },list)
                        ;
                    }
                });
    }

    public class MyViewHolder implements Holder<TomBean.StoriesBean> {

        private ImageView imageView;

        @Override
        public View createView(Context context) {
            imageView = new ImageView(MainActivity.this);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,200);
            imageView.setLayoutParams(params);
            return imageView;
        }

        @Override
        public void UpdateUI(Context context, int position, TomBean.StoriesBean data) {

            Glide.with(MainActivity.this)
                    .load(data.getImages().get(0)).into(imageView);
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        convenientBannerb.startTurning(3000);
    }

    @Override
    protected void onPause() {
        super.onPause();
        convenientBannerb.stopTurning();
    }
}

//在清单文件中加上联网权限

//在布局中:
创建ConvenientBanner的布局
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值