package licola.demo.com.huabandemo.Module.SearchResult; import android.content.Context; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import java.util.List; import licola.demo.com.huabandemo.API.Fragment.OnPeopleFragmentInteraction; import licola.demo.com.huabandemo.API.HttpsAPI.SearchAPI; import licola.demo.com.huabandemo.Adapter.RecyclerPeopleAdapter; import licola.demo.com.huabandemo.Base.BaseRecyclerHeadFragment; import licola.demo.com.huabandemo.HttpUtils.RetrofitClient; import licola.demo.com.huabandemo.Module.SearchResult.SearchPeopleListBean.UsersBean; import licola.demo.com.huabandemo.Observable.ErrorHelper; import licola.demo.com.huabandemo.Util.Logger; import rx.Observable; import rx.Subscriber; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Func1; import rx.schedulers.Schedulers; /** * Created by LiCola on 2016/04/05 22:09 */ public class ResultPeopleFragment extends BaseRecyclerHeadFragment<RecyclerPeopleAdapter, List<UsersBean>> { private int mIndex = 1;//联网的起始页 默认1 private OnPeopleFragmentInteraction<UsersBean> mListener; @Override protected String getTAG() { return this.toString(); } //只需要一个Key作为关键字联网 public static ResultPeopleFragment newInstance(String key) { ResultPeopleFragment fragment = new ResultPeopleFragment(); Bundle args = new Bundle(); args.putString(TYPE_KEY, key); fragment.setArguments(args); return fragment; } @Override protected Subscription getHttpFirst() { return RetrofitClient.createService(SearchAPI.class) .httpsPeopleSearchRx(mAuthorization,mKey,mIndex,mLimit) .subscribeOn(Schedulers.io()) .flatMap(new Func1<SearchPeopleListBean, Observable<SearchPeopleListBean>>() { @Override public Observable<SearchPeopleListBean> call(SearchPeopleListBean searchPeopleListBean) { return ErrorHelper.getCheckNetError(searchPeopleListBean); } }) .map(SearchPeopleListBean::getUsers) .filter(getFilterFunc1()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<List<UsersBean>>() { @Override public void onCompleted() { Logger.d(); } @Override public void onError(Throwable e) { Logger.d(e.toString()); checkException(e); } @Override public void onNext(List<UsersBean> usersBeen) { mAdapter.addListNotify(usersBeen); mIndex++; } }); } @Override protected Subscription getHttpScroll() { return getHttpFirst(); } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof OnPeopleFragmentInteraction) { mListener = (OnPeopleFragmentInteraction<UsersBean>) context; } else { throwRuntimeException(context); } } @Override protected void initListener() { super.initListener(); mAdapter.setOnClickItemListener(new RecyclerPeopleAdapter.OnAdapterListener() { @Override public void onClickUser(UsersBean bean, View view) { mListener.onClickItemUser(bean, view); } }); } @Override protected View getHeadView() { return null; } @Override protected int getAdapterPosition() { return mAdapter.getAdapterPosition(); } @Override protected RecyclerView.LayoutManager getLayoutManager() { return new LinearLayoutManager(getContext()); } @Override protected RecyclerPeopleAdapter setAdapter() { return new RecyclerPeopleAdapter(mRecyclerView); } }