package com.example.jingbin.cloudreader.ui.gank.child; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.widget.LinearLayoutManager; import com.example.http.HttpUtils; import com.example.jingbin.cloudreader.R; import com.example.jingbin.cloudreader.adapter.AndroidAdapter; import com.example.jingbin.cloudreader.app.Constants; import com.example.jingbin.cloudreader.base.BaseFragment; import com.example.jingbin.cloudreader.bean.GankIoDataBean; import com.example.jingbin.cloudreader.databinding.FragmentAndroidBinding; import com.example.jingbin.cloudreader.http.RequestImpl; import com.example.jingbin.cloudreader.http.cache.ACache; import com.example.jingbin.cloudreader.model.GankOtherModel; import com.example.jingbin.cloudreader.utils.DebugUtil; import com.example.xrecyclerview.XRecyclerView; import rx.Subscription; /** * 大安卓 fragment */ public class AndroidFragment extends BaseFragment<FragmentAndroidBinding> { private static final String TAG = "AndroidFragment"; private static final String TYPE = "mType"; private String mType = "Android"; private int mPage = 1; private boolean mIsPrepared; private boolean mIsFirst = true; private AndroidAdapter mAndroidAdapter; private ACache mACache; private GankIoDataBean mAndroidBean; private GankOtherModel mModel; public static AndroidFragment newInstance(String type) { AndroidFragment fragment = new AndroidFragment(); Bundle args = new Bundle(); args.putString(TYPE, type); fragment.setArguments(args); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { mType = getArguments().getString(TYPE); } } @Override public int setContent() { return R.layout.fragment_android; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); mACache = ACache.get(getContext()); mModel = new GankOtherModel(); // mAndroidBean = (GankIoDataBean) mACache.getAsObject(Constants.GANK_ANDROID); DebugUtil.error(TAG + "----onActivityCreated"); mAndroidAdapter = new AndroidAdapter(); bindingView.xrvAndroid.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { mPage = 1; loadAndroidData(); } @Override public void onLoadMore() { mPage++; loadAndroidData(); } }); // 准备就绪 mIsPrepared = true; } @Override protected void loadData() { if (!mIsPrepared || !mIsVisible || !mIsFirst) { return; } if (mAndroidBean != null && mAndroidBean.getResults() != null && mAndroidBean.getResults().size() > 0) { showContentView(); mAndroidBean = (GankIoDataBean) mACache.getAsObject(Constants.GANK_ANDROID); setAdapter(mAndroidBean); } else { loadAndroidData(); } } private void loadAndroidData() { mModel.setData(mType, mPage, HttpUtils.per_page_more); mModel.getGankIoData(new RequestImpl() { @Override public void loadSuccess(Object object) { showContentView(); GankIoDataBean gankIoDataBean = (GankIoDataBean) object; if (mPage == 1) { if (gankIoDataBean != null && gankIoDataBean.getResults() != null && gankIoDataBean.getResults().size() > 0) { setAdapter(gankIoDataBean); mACache.remove(Constants.GANK_ANDROID); // 缓存50分钟 mACache.put(Constants.GANK_ANDROID, gankIoDataBean, 30000); } } else { if (gankIoDataBean != null && gankIoDataBean.getResults() != null && gankIoDataBean.getResults().size() > 0) { bindingView.xrvAndroid.refreshComplete(); mAndroidAdapter.addAll(gankIoDataBean.getResults()); mAndroidAdapter.notifyDataSetChanged(); } else { bindingView.xrvAndroid.noMoreLoading(); } } } @Override public void loadFailed() { bindingView.xrvAndroid.refreshComplete(); // 注意:这里不能写成 mPage == 1,否则会一直显示错误页面 if (mAndroidAdapter.getItemCount() == 0) { showError(); } if (mPage > 1) { mPage--; } } @Override public void addSubscription(Subscription subscription) { AndroidFragment.this.addSubscription(subscription); } }); } /** * 设置adapter */ private void setAdapter(GankIoDataBean mAndroidBean) { mAndroidAdapter.clear(); mAndroidAdapter.addAll(mAndroidBean.getResults()); bindingView.xrvAndroid.setLayoutManager(new LinearLayoutManager(getActivity())); bindingView.xrvAndroid.setAdapter(mAndroidAdapter); mAndroidAdapter.notifyDataSetChanged(); bindingView.xrvAndroid.refreshComplete(); mIsFirst = false; } /** * 加载失败后点击后的操作 */ @Override protected void onRefresh() { loadAndroidData(); } @Override public void onDestroy() { super.onDestroy(); DebugUtil.error(TAG + " ----onDestroy"); } @Override public void onResume() { super.onResume(); DebugUtil.error(TAG + " ----onResume"); } }