这次需要的依赖有点多~
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;
主页面Activity的展示想多而言就好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; } @Override public MyViewHondler onCreateViewHolder(ViewGroup parent, int viewType) { View view=View.inflate(context,R.layout.recyclerview_item1,null); MyViewHondler myViewHondler=new MyViewHondler(view); return myViewHondler; } @Override public 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()); } @Override public 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); } } }
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) { } }); } }