retrofit+Rxjava

这次需要的依赖有点多~

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;
        }
@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);
    }
}
}
主页面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) {
            }
        });
    }
}



















评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值