package licola.demo.com.huabandemo.Module.SearchResult; import android.content.Context; import android.os.Bundle; import android.view.View; import java.util.List; import licola.demo.com.huabandemo.API.Fragment.OnBoardFragmentInteractionListener; import licola.demo.com.huabandemo.API.HttpsAPI.SearchAPI; import licola.demo.com.huabandemo.Adapter.RecyclerBoardAdapter; import licola.demo.com.huabandemo.Base.BaseRecyclerHeadFragment; import licola.demo.com.huabandemo.Entity.BoardPinsBean; import licola.demo.com.huabandemo.HttpUtils.RetrofitClient; 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 17:05 */ public class ResultBoardFragment extends BaseRecyclerHeadFragment<RecyclerBoardAdapter,List<BoardPinsBean>> { private static final String TAG = "ResultBoardFragment"; private int mIndex = 1;//联网的起始页 默认1 private OnBoardFragmentInteractionListener<BoardPinsBean> mListener; //只需要一个Key作为关键字联网 public static ResultBoardFragment newInstance(String key) { ResultBoardFragment fragment = new ResultBoardFragment(); Bundle args = new Bundle(); args.putString(TYPE_KEY, key); fragment.setArguments(args); return fragment; } @Override protected String getTAG() { return this.toString(); } @Override protected Subscription getHttpFirst() { return RetrofitClient.createService(SearchAPI.class) .httpsBoardSearchRx(mAuthorization,mKey,mIndex,mLimit) .flatMap(new Func1<SearchBoardListBean, Observable<SearchBoardListBean>>() { @Override public Observable<SearchBoardListBean> call(SearchBoardListBean searchBoardListBean) { return ErrorHelper.getCheckNetError(searchBoardListBean); } }) .map(new Func1<SearchBoardListBean, List<BoardPinsBean>>() { @Override public List<BoardPinsBean> call(SearchBoardListBean searchBoardListBean) { return searchBoardListBean.getBoards(); } }) .filter(getFilterFunc1()) .subscribeOn(Schedulers.io())//发布者的运行线程 联网操作属于IO操作 .observeOn(AndroidSchedulers.mainThread())//订阅者的运行线程 在main线程中才能修改UI .subscribe(new Subscriber<List<BoardPinsBean>>() { @Override public void onCompleted() { Logger.d(); } @Override public void onError(Throwable e) { Logger.d(e.toString()); checkException(e); } @Override public void onNext(List<BoardPinsBean> boardPinsBeen) { Logger.d(); mAdapter.addListNotify(boardPinsBeen); mIndex++; } }); } @Override protected Subscription getHttpScroll() { return getHttpFirst(); } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof OnBoardFragmentInteractionListener) { mListener= (OnBoardFragmentInteractionListener<BoardPinsBean>) context; }else { throwRuntimeException(context); } if (context instanceof SearchResultActivity){ mAuthorization=((SearchResultActivity) context).mAuthorization; } } @Override protected void initListener() { super.initListener(); mAdapter.setOnClickItemListener(new RecyclerBoardAdapter.onAdapterListener() { @Override public void onClickImage(BoardPinsBean bean, View view) { mListener.onClickBoardItemImage(bean,view); } @Override public void onClickTextInfo(BoardPinsBean bean, View view) { mListener.onClickBoardItemImage(bean,view); } }); } @Override protected View getHeadView() { return null; } @Override protected int getAdapterPosition() { return mAdapter.getAdapterPosition(); } @Override protected RecyclerBoardAdapter setAdapter() { return new RecyclerBoardAdapter(mRecyclerView); } }