package com.example.jingbin.cloudreader.ui.gank.child;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.TextView;
import com.cocosw.bottomsheet.BottomSheet;
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.FragmentCustomBinding;
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.utils.SPUtils;
import com.example.jingbin.cloudreader.utils.ToastUtil;
import com.example.xrecyclerview.XRecyclerView;
import rx.Subscription;
public class CustomFragment extends BaseFragment<FragmentCustomBinding> {
private static final String TAG = "CustomFragment";
private static final String TYPE = "mType";
private String mType = "all";
private int mPage = 1;
private boolean mIsPrepared;
private boolean mIsFirst = true;
private AndroidAdapter mAndroidAdapter;
private ACache mACache;
private GankIoDataBean mAllBean;
private View mHeaderView;
private GankOtherModel mModel;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
DebugUtil.error("--CustomFragment ----onActivityCreated");
mACache = ACache.get(getContext());
mModel = new GankOtherModel();
// mAllBean = (GankIoDataBean) mACache.getAsObject(Constants.GANK_CUSTOM);
// 禁止下拉刷新
bindingView.xrvCustom.setPullRefreshEnabled(false);
// 去掉刷新头
bindingView.xrvCustom.clearHeader();
mAndroidAdapter = new AndroidAdapter();
bindingView.xrvCustom.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
}
@Override
public void onLoadMore() {
mPage++;
loadCustomData();
}
});
// 准备就绪
mIsPrepared = true;
}
@Override
public int setContent() {
return R.layout.fragment_custom;
}
@Override
protected void loadData() {
if (!mIsPrepared || !mIsVisible || !mIsFirst) {
return;
}
if (mAllBean != null
&& mAllBean.getResults() != null
&& mAllBean.getResults().size() > 0) {
showContentView();
mAllBean = (GankIoDataBean) mACache.getAsObject(Constants.GANK_CUSTOM);
setAdapter(mAllBean);
} else {
loadCustomData();
}
}
private void loadCustomData() {
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_CUSTOM);
// 缓存50分钟
mACache.put(Constants.GANK_CUSTOM, gankIoDataBean, 30000);
}
} else {
if (gankIoDataBean != null && gankIoDataBean.getResults() != null && gankIoDataBean.getResults().size() > 0) {
bindingView.xrvCustom.refreshComplete();
mAndroidAdapter.addAll(gankIoDataBean.getResults());
mAndroidAdapter.notifyDataSetChanged();
} else {
bindingView.xrvCustom.noMoreLoading();
}
}
}
@Override
public void loadFailed() {
showContentView();
bindingView.xrvCustom.refreshComplete();
if (mAndroidAdapter.getItemCount() == 0) {
showError();
}
if (mPage > 1) {
mPage--;
}
}
@Override
public void addSubscription(Subscription subscription) {
CustomFragment.this.addSubscription(subscription);
}
});
}
/**
* 设置adapter
*/
private void setAdapter(GankIoDataBean mCustomBean) {
if (mHeaderView == null) {
mHeaderView = View.inflate(getContext(), R.layout.header_item_gank_custom, null);
bindingView.xrvCustom.addHeaderView(mHeaderView);
}
initHeader(mHeaderView);
boolean isAll = SPUtils.getString("gank_cala", "全部").equals("全部");
mAndroidAdapter.clear();
mAndroidAdapter.setAllType(isAll);
mAndroidAdapter.addAll(mCustomBean.getResults());
bindingView.xrvCustom.setLayoutManager(new LinearLayoutManager(getActivity()));
bindingView.xrvCustom.setAdapter(mAndroidAdapter);
mAndroidAdapter.notifyDataSetChanged();
mIsFirst = false;
}
private void initHeader(View mHeaderView) {
final TextView txName = (TextView) mHeaderView.findViewById(R.id.tx_name);
String gankCala = SPUtils.getString("gank_cala", "全部");
txName.setText(gankCala);
View view = mHeaderView.findViewById(R.id.ll_choose_catalogue);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
new BottomSheet.Builder(getActivity(), R.style.BottomSheet_StyleDialog).title("选择分类").sheet(R.menu.gank_bottomsheet).listener(new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case R.id.gank_all:
if (isOtherType("全部")) {
txName.setText("全部");
mType = "all";// 全部传 all
mPage = 1;
mAndroidAdapter.clear();
SPUtils.putString("gank_cala", "全部");
showLoading();
loadCustomData();
}
break;
case R.id.gank_ios:
if (isOtherType("IOS")) {
txName.setText("IOS");
mType = "iOS";// 这里有严格大小写
mPage = 1;
mAndroidAdapter.clear();
SPUtils.putString("gank_cala", "IOS");
showLoading();
loadCustomData();
}
break;
case R.id.gank_qian:
if (isOtherType("前端")) {
changeContent(txName, "前端");
}
break;
case R.id.gank_app:
if (isOtherType("App")) {
changeContent(txName, "App");
}
break;
case R.id.gank_movie:
if (isOtherType("休息视频")) {
changeContent(txName, "休息视频");
}
break;
case R.id.gank_resouce:
if (isOtherType("拓展资源")) {
changeContent(txName, "拓展资源");
}
break;
}
}
}).show();
}
});
}
private void changeContent(TextView textView, String content) {
textView.setText(content);
mType = content;
mPage = 1;
mAndroidAdapter.clear();
SPUtils.putString("gank_cala", content);
showLoading();
loadCustomData();
}
private boolean isOtherType(String selectType) {
String clickText = SPUtils.getString("gank_cala", "全部");
if (clickText.equals(selectType)) {
ToastUtil.showToast("当前已经是" + selectType + "分类");
return false;
} else {
// 重置XRecyclerView状态,解决 如出现刷新到底无内容再切换其他类别后,无法上拉加载的情况
bindingView.xrvCustom.reset();
return true;
}
}
/**
* 加载失败后点击后的操作
*/
@Override
protected void onRefresh() {
loadCustomData();
}
@Override
public void onDestroy() {
super.onDestroy();
DebugUtil.error("--CustomFragment ----onDestroy");
}
@Override
public void onResume() {
super.onResume();
DebugUtil.error(TAG + " ----onResume");
}
}