package licola.demo.com.huabandemo.Module.SearchResult; import android.content.Context; import android.os.Bundle; import android.view.View; import java.util.List; import org.greenrobot.eventbus.EventBus; import licola.demo.com.huabandemo.API.Fragment.OnPinsFragmentInteractionListener; import licola.demo.com.huabandemo.API.HttpsAPI.SearchAPI; import licola.demo.com.huabandemo.Adapter.RecyclerPinsHeadCardAdapter; import licola.demo.com.huabandemo.Base.BaseRecyclerHeadFragment; import licola.demo.com.huabandemo.Entity.PinsMainEntity; 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 16:48 */ public class ResultPinsFragment extends BaseRecyclerHeadFragment<RecyclerPinsHeadCardAdapter, List<PinsMainEntity>> { private static final String TAG = "ResultPinsFragment"; private int mIndex = 1;//联网的起始页 默认1 private OnPinsFragmentInteractionListener mListener; @Override protected String getTAG() { return this.toString(); } //只需要一个Key作为关键字联网 public static ResultPinsFragment newInstance(String key) { ResultPinsFragment fragment = new ResultPinsFragment(); Bundle args = new Bundle(); args.putString(TYPE_KEY, key); fragment.setArguments(args); return fragment; } @Override protected Subscription getHttpFirst() { return RetrofitClient.createService(SearchAPI.class) .httpsImageSearchRx(mAuthorization,mKey, mIndex, mLimit) .flatMap(new Func1<SearchImageBean, Observable<SearchImageBean>>() { @Override public Observable<SearchImageBean> call(SearchImageBean searchImageBean) { return ErrorHelper.getCheckNetError(searchImageBean); } }) .map(new Func1<SearchImageBean, List<PinsMainEntity>>() { @Override public List<PinsMainEntity> call(SearchImageBean searchImageBean) { return searchImageBean.getPins();//取出list对象 } }) .filter(getFilterFunc1()) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<List<PinsMainEntity>>() { @Override public void onCompleted() { Logger.d(); } @Override public void onError(Throwable e) { Logger.d(e.toString()); checkException(e); } @Override public void onNext(List<PinsMainEntity> pinsAndUserEntities) { Logger.d(); mAdapter.addListNotify(pinsAndUserEntities); mIndex++; } }); } @Override protected Subscription getHttpScroll() { return getHttpFirst(); } @Override public void onAttach(Context context) { super.onAttach(context); if (context instanceof OnPinsFragmentInteractionListener) { mListener = (OnPinsFragmentInteractionListener) context; } else { throwRuntimeException(context); } if (context instanceof SearchResultActivity){ mAuthorization=((SearchResultActivity) context).mAuthorization; } } @Override protected void initListener() { super.initListener(); mAdapter.setOnClickItemListener(new RecyclerPinsHeadCardAdapter.OnAdapterListener() { @Override public void onClickImage(PinsMainEntity bean, View view) { EventBus.getDefault().postSticky(bean); mListener.onClickPinsItemImage(bean, view); } @Override public void onClickTitleInfo(PinsMainEntity bean, View view) { EventBus.getDefault().postSticky(bean); mListener.onClickPinsItemText(bean, view); } @Override public void onClickInfoGather(PinsMainEntity bean, View view) { Logger.d(); } @Override public void onClickInfoLike(PinsMainEntity bean, View view) { Logger.d(); } }); } @Override protected View getHeadView() { return null; } @Override protected int getAdapterPosition() { return mAdapter.getAdapterPosition(); } @Override protected RecyclerPinsHeadCardAdapter setAdapter() { return new RecyclerPinsHeadCardAdapter(mRecyclerView); } }