Retrofit和Rxjava的简单了解

Retrofit是由square公司开发的,是一个网络开发框架

1.首先使用它的时候,要先导入相关的jar包(一定要版本相同,否则运行的时候会报错)

compile 'io.reactivex:rxjava:1.1.0'
compile 'io.reactivex:rxandroid:1.1.0'

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0-beta4'

compile 'com.google.code.gson:gson:2.6.2'
2.定义一个接口类:

public interface RestService{
    @GET("top250")
    Observable<MovieBean> getTopMovie(@Query("start")int start, @Query("count")int count);
}
3.再单独写一个工具Utils类(导入包的时候注意别导错包)

public class RestClient {
    private static final String BASE_URL = "https://api.douban.com/v2/movie/";
    private  Retrofit mRetrofit;
    private  RestService mService;
    private static final int DEFAULT_TIMEOUT = 5;

    public RestClient(){
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.connectTimeout(DEFAULT_TIMEOUT,TimeUnit.SECONDS);
        mRetrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        mService = mRetrofit.create(RestService.class);

    }
    public RestService getRectService(){
        if (mService != null){
            return mService;
        }
        return null;
    }
    private static class SingletonHolder{
        private static final RestClient INSTANCE = new RestClient();
    }
    public static RestClient getInstance(){
        return SingletonHolder.INSTANCE;
    }

    public void getTopMovie(Subscriber<MovieBean> subscriber, int start , int count){
        mService.getTopMovie(start,count)
                .subscribeOn(Schedulers.io())
                .unsubscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(subscriber);
    }
}
4.然后在Main界面的点击事件中请求即可

findViewById(R.id.click_me_BN).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        getMovie();
    }
});
5.
private void getMovie() {
    subscriber = new Subscriber<MovieBean>(){
        @Override
        public void onCompleted() {
            Toast.makeText(MainActivity.this, "Get Top Movie Completed", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(Throwable e) {

        }

        @Override
        public void onNext(final MovieBean responseBody) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    list = responseBody.getSubjects();
                    listView.setAdapter(new MovieAdapter(MainActivity.this,list));
                }
            });

        }

    };
    RestClient.getInstance().getTopMovie(subscriber,0,10);
}

6.布局和modele类的封装就不传了,大家可自己简单写下(参照 网上自己写了写)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值