先导包:
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的布局
有关Rxjava和retrofit
最新推荐文章于 2024-01-30 22:45:11 发布