package com.example.jingbin.cloudreader.ui.one; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import com.example.jingbin.cloudreader.R; import com.example.jingbin.cloudreader.adapter.DouBanTopAdapter; import com.example.jingbin.cloudreader.base.BaseActivity; import com.example.jingbin.cloudreader.bean.HotMovieBean; import com.example.jingbin.cloudreader.databinding.ActivityDoubanTopBinding; import com.example.jingbin.cloudreader.http.HttpClient; import com.example.xrecyclerview.XRecyclerView; import rx.Observer; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; /** * Created by jingbin on 16/12/10. */ public class DoubanTopActivity extends BaseActivity<ActivityDoubanTopBinding> { private DouBanTopAdapter mDouBanTopAdapter; private int mStart = 0; private int mCount = 21; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_douban_top); setTitle("豆瓣电影Top250"); mDouBanTopAdapter = new DouBanTopAdapter(DoubanTopActivity.this); loadDouBanTop250(); bindingView.xrvTop.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { } @Override public void onLoadMore() { mStart += mCount; loadDouBanTop250(); } }); } private void loadDouBanTop250() { Subscription get = HttpClient.Builder.getDouBanService().getMovieTop250(mStart, mCount) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<HotMovieBean>() { @Override public void onCompleted() { showContentView(); } @Override public void onError(Throwable e) { bindingView.xrvTop.refreshComplete(); if (mDouBanTopAdapter.getItemCount() == 0) { showError(); } } @Override public void onNext(HotMovieBean hotMovieBean) { if (mStart == 0) { if (hotMovieBean != null && hotMovieBean.getSubjects() != null && hotMovieBean.getSubjects().size() > 0) { mDouBanTopAdapter.clear(); mDouBanTopAdapter.addAll(hotMovieBean.getSubjects()); //构造器中,第一个参数表示列数或者行数,第二个参数表示滑动方向,瀑布流 bindingView.xrvTop.setLayoutManager(new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL)); bindingView.xrvTop.setAdapter(mDouBanTopAdapter); bindingView.xrvTop.setPullRefreshEnabled(false); bindingView.xrvTop.clearHeader(); bindingView.xrvTop.setLoadingMoreEnabled(true); mDouBanTopAdapter.notifyDataSetChanged(); } else { bindingView.xrvTop.setVisibility(View.GONE); } } else { if (hotMovieBean != null && hotMovieBean.getSubjects() != null && hotMovieBean.getSubjects().size() > 0) { bindingView.xrvTop.refreshComplete(); mDouBanTopAdapter.addAll(hotMovieBean.getSubjects()); mDouBanTopAdapter.notifyDataSetChanged(); } else { bindingView.xrvTop.noMoreLoading(); } } } }); addSubscription(get); } @Override protected void onRefresh() { loadDouBanTop250(); } public static void start(Context mContext) { Intent intent = new Intent(mContext, DoubanTopActivity.class); mContext.startActivity(intent); } }