package com.example.jingbin.cloudreader.ui.gank.child; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.widget.StaggeredGridLayoutManager; import com.example.http.HttpUtils; import com.example.jingbin.cloudreader.R; import com.example.jingbin.cloudreader.adapter.WelfareAdapter; import com.example.jingbin.cloudreader.app.Constants; import com.example.jingbin.cloudreader.base.BaseFragment; import com.example.jingbin.cloudreader.base.baseadapter.OnItemClickListener; import com.example.jingbin.cloudreader.bean.GankIoDataBean; import com.example.jingbin.cloudreader.databinding.FragmentWelfareBinding; 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.jingbin.cloudreader.view.viewbigimage.ViewBigImageActivity; import com.example.xrecyclerview.XRecyclerView; import java.util.ArrayList; import rx.Subscription; /** * 福利 */ public class WelfareFragment extends BaseFragment<FragmentWelfareBinding> { private static final String TAG = "WelfareFragment"; private int mPage = 1; private WelfareAdapter mWelfareAdapter; private boolean isPrepared = false; private boolean isFirst = true; private ACache aCache; private GankIoDataBean meiziBean; private GankOtherModel mModel; @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); DebugUtil.error("--WelfareFragment ----onActivityCreated"); mModel = new GankOtherModel(); aCache = ACache.get(getContext()); // meiziBean = (GankIoDataBean) aCache.getAsObject(Constants.GANK_MEIZI); bindingView.xrvWelfare.setPullRefreshEnabled(false); bindingView.xrvWelfare.clearHeader(); mWelfareAdapter = new WelfareAdapter(); bindingView.xrvWelfare.setLoadingListener(new XRecyclerView.LoadingListener() { @Override public void onRefresh() { } @Override public void onLoadMore() { mPage++; loadWelfareData(); } }); isPrepared = true; } @Override protected void loadData() { if (!mIsVisible || !isPrepared || !isFirst) { return; } if (meiziBean != null && meiziBean.getResults() != null && meiziBean.getResults().size() > 0) { showContentView(); imgList.clear(); for (int i = 0; i < meiziBean.getResults().size(); i++) { imgList.add(meiziBean.getResults().get(i).getUrl()); } meiziBean = (GankIoDataBean) aCache.getAsObject(Constants.GANK_MEIZI); setAdapter(meiziBean); } else { loadWelfareData(); } } private void loadWelfareData() { mModel.setData("福利", 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) { imgList.clear(); for (int i = 0; i < gankIoDataBean.getResults().size(); i++) { imgList.add(gankIoDataBean.getResults().get(i).getUrl()); } setAdapter(gankIoDataBean); aCache.remove(Constants.GANK_MEIZI); aCache.put(Constants.GANK_MEIZI, gankIoDataBean, 30000); } } else { if (gankIoDataBean != null && gankIoDataBean.getResults() != null && gankIoDataBean.getResults().size() > 0) { bindingView.xrvWelfare.refreshComplete(); mWelfareAdapter.addAll(gankIoDataBean.getResults()); mWelfareAdapter.notifyDataSetChanged(); for (int i = 0; i < gankIoDataBean.getResults().size(); i++) { imgList.add(gankIoDataBean.getResults().get(i).getUrl()); } } else { bindingView.xrvWelfare.noMoreLoading(); } } } @Override public void loadFailed() { bindingView.xrvWelfare.refreshComplete(); if (mWelfareAdapter.getItemCount() == 0) { showError(); } if (mPage > 1) { mPage--; } } @Override public void addSubscription(Subscription subscription) { WelfareFragment.this.addSubscription(subscription); } }); } ArrayList<String> imgList = new ArrayList<>(); private void setAdapter(GankIoDataBean gankIoDataBean) { // mWelfareAdapter = new WelfareAdapter(); mWelfareAdapter.addAll(gankIoDataBean.getResults()); //构造器中,第一个参数表示列数或者行数,第二个参数表示滑动方向,瀑布流 bindingView.xrvWelfare.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL)); bindingView.xrvWelfare.setAdapter(mWelfareAdapter); mWelfareAdapter.notifyDataSetChanged(); mWelfareAdapter.setOnItemClickListener(new OnItemClickListener<GankIoDataBean.ResultBean>() { @Override public void onClick(GankIoDataBean.ResultBean resultsBean, int position) { DebugUtil.error("-----" + imgList.toString()); DebugUtil.error("----imgList.size(): " + imgList.size()); Bundle bundle = new Bundle(); bundle.putInt("selet", 2);// 2,大图显示当前页数,1,头像,不显示页数 bundle.putInt("code", position);//第几张 bundle.putStringArrayList("imageuri", imgList); Intent intent = new Intent(getContext(), ViewBigImageActivity.class); intent.putExtras(bundle); getContext().startActivity(intent); } }); // 显示成功后就不是第一次了,不再刷新 isFirst = false; } @Override public int setContent() { return R.layout.fragment_welfare; } @Override protected void onRefresh() { loadWelfareData(); } @Override public void onDestroy() { super.onDestroy(); DebugUtil.error("--WelfareFragment ----onDestroy"); } @Override public void onResume() { super.onResume(); DebugUtil.error(TAG + " ----onResume"); } }