RX_JAVA

来源:互联网 发布:windows转换苹果系统 编辑:程序博客网 时间:2024/06/07 02:28
ApiService:
public interface ApiService {    //结合Retrofit+RxJava    @GET("data.do?channelId=0&startNum=0")    Observable<News> getNoParams();    //结合RxJava   @GET("users/{user}")    Observable<User>  getHasParams(@Path("user")String user);}


MainActivity:
public class MainActivity extends AppCompatActivity {    private RecyclerView recy;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        recy=(RecyclerView)findViewById(R.id.recy);        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);        recy.setLayoutManager(linearLayoutManager);        getNoParams();    }    private void getNoParams() {        final Retrofit retrofit = new Retrofit.Builder().baseUrl(Api.BASE_PATH).addConverterFactory(GsonConverterFactory.create())                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//支持RxJava                .build();        ApiService apiService = retrofit.create(ApiService.class);        //得到Observable        rx.Observable<News> noParams = apiService.getNoParams();//生产事件//被观察者订阅观察 默认在同一个线程       noParams.observeOn(AndroidSchedulers.mainThread())//指定更新UI在主线程               .subscribeOn(Schedulers.io())//指定IO做耗时操作                .subscribe(new Observer<News>() {                    @Override                    public void onCompleted() {//完成                    }                    @Override                    public void onError(Throwable e) {//失败                        Log.i("xxx", e.getMessage());                    }                    @Override                    public void onNext(News news) {//消费事件                       /* List<News.AdsBean> ads = news.getAds();                        for (int i = 0; i < ads.size(); i++) {                            News.AdsBean adsBean = ads.get(i);                            String gonggaoren = adsBean.getGonggaoren();                            Log.i("xxx", gonggaoren);                        }*/                       //Toast.makeText(MainActivity.this,news.getData().get(0).getTITLE().toString(),Toast.LENGTH_SHORT).show();                        MyApter myApter = new MyApter(MainActivity.this, news);                        recy.setAdapter(myApter);                    }                });    }}


MyAdpter:
public class MyApter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{    private News newss;    private Context context;  public MyApter( Context context,News newss){        this.context=context;        this.newss=newss;    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(context).inflate(R.layout.item, null);        return new MyApterHolder(view);    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        MyApterHolder holder1 = (MyApterHolder)holder;        List<News.DataBean> data = newss.getData();        String title = data.get(position).getTITLE();        holder1.tv.setText(title);    }    @Override    public int getItemCount() {        return newss.getData().size();    }    class MyApterHolder extends RecyclerView.ViewHolder{        private  TextView tv;        public MyApterHolder(View itemView) {            super(itemView);            tv=itemView.findViewById(R.id.tv);        }    }}

依赖:
compile 'com.squareup.retrofit2:retrofit:2.0.1'compile 'com.squareup.retrofit2:converter-gson:2.0.1'compile 'com.squareup.retrofit2:adapter-rxjava:2.0.1'compile 'io.reactivex:rxandroid:1.1.0'compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'



原创粉丝点击