利用retrofit/rxjava2做一個簡單的網絡請求、效果是一個輪播圖。(輪播圖使用的是Banner插件,網址:https://github.com/youth5201314/banner)
建個接口
public interface ?ApiService {
? ? ? //以get為例
? ? ? @GET("/api/v1.0/News/ScrollPic")
? ? ? Observable <BannerBean>getBanners(@Query("AppKey")String appky,@Query("Timestamp")String timestamp,@Query("Sign")String sign);
}
//簡單的對glide進行封裝
public class GlideImageLoader extends ImageLoader {
? ? ? ? ?@Override
? ? ? ? ? public void displayImage(Context context, Object path, ImageView imageView) {
? ? ? ? ? ? ? ? if(context!=null) {
? ? ? ? ? ? ? ? ? ? ? Glide.with(context).load(path).into(imageView);
? ? ? ? ? ? ? ?}
? ? ? ? }
}
//布局文件
<Linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? ? ? android:orientation="vertical"
? ? ? ? android:layout_width="match_parent"
? ? ? ? ?android:layout_height="match_parent"
>
<com.youth.banner.Banner
? ? ? ? android:id="@+id/t1"
? ? ? ? ?android:layout_width="match_parent"
? ? ? ? android:layout_height="160dp"
? ? ? ? android:text="Hello World!"
/>
</LinearLayout>
//mainActivity
public class ?MainActivity ?extends AppCompatActivity {
? ? ? ? ?public static finalStringBASEURL="此處填寫網址";
? ? ? ? ? private Banner t;
? ? ? ? ?@Override
? ? ? ? ?protected voidonCreate(Bundle savedInstanceState) {
? ? ? ? ? ? ? ?super.onCreate(savedInstanceState);
? ? ? ? ? ? ? ? setContentView(R.layout.activity_main);
? ? ? ? ? ? ? ?t= ((Banner) findViewById(R.id.t1));
? ? ? ? ? ? ? ? Retrofit retrofit=newRetrofit.Builder()
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.baseUrl(BASEURL)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.addConverterFactory(GsonConverterFactory.create())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .build();
? ? ? ? ? ? ? ? ? ?ApiService apiService=retrofit.create(ApiService.class);
//此處填寫自己的參數
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? apiService.getBanners("androidkey",“ ”)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//將其切換到主線程
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.subscribeOn(Schedulers.io())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .observeOn(AndroidSchedulers.mainThread())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?.subscribe(newObserver() {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? private ArrayList?strings;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? public void onSubscribe(@NonNull Disposable d) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?public void onNext(@NonNull BannerBean bannerBean) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? strings=new ArrayList<>();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for(int i=0;i<bannerBean.getData().size();i++){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? strings.add(bannerBean.getData().get(i).getPicurl());
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?t.setImages(strings).setImageLoader(new GlideImageLoader()).start();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?@Override
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?public void onError(@NonNull Throwable e){ }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?public void onComplete() {}
});
}