package com.zenglb.framework.activity.main;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.liaoinstan.springview.container.DefaultFooter;
import com.liaoinstan.springview.container.DefaultHeader;
import com.liaoinstan.springview.widget.SpringView;
import com.squareup.leakcanary.RefWatcher;
import com.zenglb.baselib.base.BaseActivity;
import com.zenglb.baselib.base.BaseFragment;
import com.zenglb.framework.R;
import com.zenglb.framework.base.MyApplication;
import com.zenglb.framework.http.core.HttpCall;
import com.zenglb.framework.http.result.JokesResult;
import com.zenglb.framework.rxhttp.BaseSubscriber;
import com.zenglb.framework.rxhttp.RxSubscriberUtils;
import java.util.ArrayList;
import java.util.List;
/**
* 懒加载太乱了,使用Rxjava 改造一下
*
*
* @author zenglb 2016.10.24
*/
public class AreUSleepFragmentList extends BaseFragment {
private String TAG = AreUSleepFragmentList.class.getSimpleName();
private static final String ARG_PARAM1 = "param1";
private TextView mEmptyTipsTxt;
private int page;
private String mParam1;
private SpringView springView;
private RecyclerView mRecyclerView = null;
private AreUSleepListAdapter areUSleepListAdapter;
private List<JokesResult> data = new ArrayList<>();
public AreUSleepFragmentList() {
// Required empty public constructor
}
/**
* Use this factory method to create a new instance of
* this fragment using the provided parameters.
*
* @param param1 Parameter 1.
* @return A new instance of fragment AreUSleepFragment.
*/
public static AreUSleepFragmentList newInstance(String param1) {
AreUSleepFragmentList fragment = new AreUSleepFragmentList();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_are_usleep, container, false);
viewsInit(rootView);
return rootView;
}
/**
* 当视图可见的时候就会被调用,当然在onCreateView 也会调用一次,
*
* 太乱了,使用rxjava 改造一下懒加载 !逻辑都是错误的!
*
*
*/
@Override
protected void lazyLoadData(boolean isForceLoad) {
if (isViewsInit && visibleTime < 1) {
Log.e(TAG, "视图已经初始化完毕了,虽然不去加载网络数据,但是可以加载一下本地持久化的缓存数据啊!");
}
if (!isViewsInit || visibleTime < 1) { //假如views 没有初始化或者Fragment不可见,那就不要尝试加载数据
return;
} else {
if (isForceLoad) {
Log.e(TAG, "前面的支付页面支付9.9,那么这里显示的剩余金额必然变动了,敏感数据,要实时刷新");
}
if (visibleTime == 1) { //这里也不是每次可见的时候都能刷新,只有第一次可见的时候或者数据加载从来没有成功 才调用刷新
springView.callFresh();
Toast.makeText(mActivity, "第一次可见", Toast.LENGTH_SHORT).show();
}
}
}
/**
* init views,
*
* @param
*/
private void viewsInit(View rootView) {
areUSleepListAdapter = new AreUSleepListAdapter(getActivity(), data);
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView);
mRecyclerView.setAdapter(areUSleepListAdapter);
springView = (SpringView) rootView.findViewById(R.id.springview);
springView.setType(SpringView.Type.FOLLOW);
springView.setListener(new SpringView.OnFreshListener() {
@Override
public void onRefresh() {
page = 1;
getHttpData(mParam1, page);
}
@Override
public void onLoadmore() {
getHttpData(mParam1, page);
}
});
mEmptyTipsTxt = (TextView) rootView.findViewById(R.id.tips_txt);
mEmptyTipsTxt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
springView.callFresh();
}
});
springView.setHeader(new DefaultHeader(getActivity()));
springView.setFooter(new DefaultFooter(getActivity()));
areUSleepListAdapter.setOnItemClickListener(new AreUSleepListAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
BaseActivity baseActivity = (BaseActivity) getActivity();
baseActivity.goWebView("http://www.baidu.com", "");
}
@Override
public void onItemLongClick(View view, int position) {
}
});
super.initViews(rootView); //
}
/**
* 请求答题列表
*/
private void getHttpData(String mParam1, int page) {
HttpCall.getApiService().getAreuSleep(mParam1, page)
.compose(RxSubscriberUtils.rxNetThreadHelper())
.compose(bindToLifecycle())
.subscribe(new BaseSubscriber<List<JokesResult>>(getActivity(),false){
@Override
public void onSuccess(List<JokesResult> areuSleepResults) {
disposeHttpResult(areuSleepResults);
}
@Override
public void onFailure(int code, String message) {
super.onFailure(code, message);
}
});
}
/**
* 处理http返回来的结果
*
* @return
*/
private void disposeHttpResult(List<JokesResult> areuSleepBeanLista) {
springView.onFinishFreshAndLoad();
if (areuSleepBeanLista != null) {
if (page <= 1) data.clear();
if (areuSleepBeanLista != null && areuSleepBeanLista.size() != 0) {
data.addAll(areuSleepBeanLista);
page++;
areUSleepListAdapter.notifyDataSetChanged();
} else {
Toast.makeText(getActivity(), "暂无数据,请稍后再试!", Toast.LENGTH_SHORT).show();
}
}
if (data == null || data.size() == 0) {
mEmptyTipsTxt.setVisibility(View.VISIBLE);
} else {
mEmptyTipsTxt.setVisibility(View.GONE);
}
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override
public void onDetach() {
super.onDetach();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onStart(){
super.onStart();
}
@Override
public void onPause(){
super.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
RefWatcher refWatcher = MyApplication.getRefWatcher(getActivity());
refWatcher.watch(this);
}
}