retrofit+Rxjava

来源:互联网 发布:大数据平台 竞品分析 编辑:程序博客网 时间:2024/05/19 23:25

这次需要的依赖有点多~

compile 'com.squareup.retrofit2:retrofit:2.0.2'// Retrofit库compile 'com.squareup.okhttp3:okhttp:3.1.2'// Okhttp库compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta3'//gson解析器compile 'io.reactivex:rxjava:1.0.14'compile 'io.reactivex:rxandroid:1.0.1'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'compile 'com.squareup.retrofit2:retrofit:2.0.2'compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
先看看接口 

public interface Interface {

    @GET("v1/restserver/ting?method=baidu.ting.billboard.billList")    Observable<Bean> getBean(@Query("type") String type,@Query("size") String size,@Query("offset") String offset);}
网络拦截器参考上一个OKhttp+Rxjava因为用的都是一个接口不同的实现网络罢了,所以我就先整网路请求代码。
package com.example.rxjava;import android.content.Context;import android.util.Log;import okhttp3.OkHttpClient;import retrofit2.GsonConverterFactory;import retrofit2.Retrofit;import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;import rx.Subscriber;import rx.android.schedulers.AndroidSchedulers;import rx.schedulers.Schedulers;public class RetrofitUntils {    private static RetrofitUntils retrofitUntils;    private Context context;    private RetrofitUntils(Context context){        this.context = context ;    }    public static RetrofitUntils getRetrofitUntils(Context context){        if(retrofitUntils==null){            synchronized (RetrofitUntils.class){                if(retrofitUntils==null){                    retrofitUntils = new RetrofitUntils(context);                }            }        }        return  retrofitUntils ;    }    public void get(String type,String size,String offset, final NetClickListener netClickListener){        OkHttpClient.Builder ok = new OkHttpClient.Builder();        ok.addInterceptor(new LoggingInterceptor());        Retrofit retrofit = new Retrofit.Builder()                //这里的url与实现接口中的url拼接成一个完整的URL                .baseUrl("http://tingapi.ting.baidu.com/")                .client(ok.build())                .addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())                .build();        Log.d("aaaaa","zh执行");        retrofit.create(Interface.class)                // 接口穿啥写啥                .getBean(type,size,offset)                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .subscribe(new Subscriber<Bean>() {                    @Override                    public void onCompleted() {                    }                    @Override                    public void onError(Throwable e) {                    }                    @Override                    public void onNext(Bean baseBean) {                        netClickListener.Suesses(baseBean);                    }                });    }}

package com.example.rxjava;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.List;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHondler>{        Context context;        List<Bean.SongListBean> list;public MyAdapter(Context context, List<Bean.SongListBean> list) {        this.context = context;        this.list = list;        }@Overridepublic MyViewHondler onCreateViewHolder(ViewGroup parent, int viewType) {        View view=View.inflate(context,R.layout.recyclerview_item1,null);        MyViewHondler myViewHondler=new MyViewHondler(view);         return myViewHondler;        }@Overridepublic void onBindViewHolder(MyViewHondler holder, int position) {        Log.e("list",list.get(0).getAuthor());        ImageLoader.getInstance().displayImage(list.get(position).getPic_small(),holder.im, Myapp.getDisk());        holder.tv.setText(list.get(position).getAuthor());        }@Overridepublic int getItemCount() {        return list.size();        }public class MyViewHondler extends RecyclerView.ViewHolder{    ImageView im;    TextView tv;    public MyViewHondler(View itemView) {        super(itemView);        im=  itemView.findViewById(R.id.recyclerview_img);        tv= itemView.findViewById(R.id.recyclerview_text);    }}}
主页面Activity的展示想多而言就好
package com.example.rxjava;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import java.util.List;public class MainActivity extends AppCompatActivity {private RecyclerView rv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        rv= (RecyclerView) findViewById(R.id.rv);        RetrofitUntils.getRetrofitUntils(this).get("1", "10", "1", new NetClickListener() {            @Override            public void Suesses(Bean baseBean) {                LinearLayoutManager linearLayoutManager = new LinearLayoutManager(MainActivity.this);                rv.setLayoutManager(linearLayoutManager);//              Log.d("list",baseBean.getSong_list().get(1).getAuthor());                List<Bean.SongListBean> list  = baseBean.getSong_list();                MyAdapter adapter=new MyAdapter(MainActivity.this,list);                rv.setAdapter(adapter);            }            @Override            public void Error(String msg) {            }        });    }}




 
原创粉丝点击