package com.pan.simplepicture.view.fragment;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import com.pan.simplepicture.R;
import com.pan.simplepicture.adapter.BaseRecyclerAdapter;
import com.pan.simplepicture.bean.Juzimi;
import com.pan.simplepicture.inter.LoadingState;
import com.pan.simplepicture.inter.OnRetryListener;
import com.pan.simplepicture.presenter.CommentPresenter;
import com.pan.simplepicture.presenter.PicturePresenter;
import com.pan.simplepicture.utils.NetWorkUtil;
import com.pan.simplepicture.view.holder.PictureHolder;
import com.pan.simplepicture.view.impl.IPictureView;
import com.pan.simplepicture.widget.LoadingView;
import java.util.List;
import java.util.TreeMap;
import butterknife.Bind;
public class PictureFragment extends BaseFragment implements IPictureView, SwipeRefreshLayout.OnRefreshListener {
@Bind(R.id.recycler_view)
public RecyclerView mRecyclerView;
private BaseRecyclerAdapter mAdapter;
private boolean canLoadMore = true;
@Override
public void setAdapter(List<Juzimi> list) {
if (mRecyclerView == null) return;
pageNo = list.size();
if (pageNo < pageSize)
canLoadMore = false;
if (mAdapter == null) {
mAdapter = new BaseRecyclerAdapter(list, R.layout.fragment_picture_item, PictureHolder.class);
mRecyclerView.setAdapter(mAdapter);
} else {
if ((mAdapter.getItem(0) == null) && (list.size() == 0))
return;
if ((mAdapter.getItem(0) == null) || (list.size() == 0) || (!((Juzimi) mAdapter.getItem(0)).url.equals(list.get(0).url)))
mAdapter.setmDatas(list);
}
}
@Override
public void loadMore(List<Juzimi> list) {
if (mRecyclerView != null && mAdapter != null && list != null) {
if (list.size() < pageSize)
canLoadMore = false;
if (list.size() <= 0) {
return;
}
mAdapter.addAll(list);
pageNo += list.size();
}
}
@Override
public void onRefreshComplete() {
if (mSwipeRefreshLayout != null && mSwipeRefreshLayout.isRefreshing())
mSwipeRefreshLayout.setRefreshing(false);
}
public void onLoadMoreComplete() {
isLoadingMore = false;
}
@Override
public PicturePresenter getPresenter() {
return new PicturePresenter();
}
private StaggeredGridLayoutManager mLayoutManager;
@Bind(R.id.swipe_refresh_layout)
SwipeRefreshLayout mSwipeRefreshLayout;
@Bind(R.id.fl_loading)
LoadingView fl_loading;
@Override
public void showSuccess() {
fl_loading.setVisibility(View.GONE);
mSwipeRefreshLayout.setVisibility(View.VISIBLE);
}
@Override
public void showEmpty() {
mSwipeRefreshLayout.setVisibility(View.GONE);
fl_loading.setVisibility(View.VISIBLE);
fl_loading.setState(LoadingState.STATE_EMPTY);
}
@Override
public boolean checkNet() {
return NetWorkUtil.isNetWorkConnected(mContext);
}
@Override
public void showFaild() {
mSwipeRefreshLayout.setVisibility(View.GONE);
fl_loading.setVisibility(View.VISIBLE);
fl_loading.setState(LoadingState.STATE_ERROR);
}
@Override
public void showNoNet() {
mSwipeRefreshLayout.setVisibility(View.GONE);
fl_loading.setVisibility(View.VISIBLE);
fl_loading.setState(LoadingState.STATE_NO_NET);
}
private int mType;
public void setmType(int mType) {
this.mType = mType;
}
@Override
public void bindView(Bundle savedInstanceState) {
if (mPresenter == null || !(mPresenter instanceof PicturePresenter)) {
return;
}
fl_loading.withLoadedEmptyText("≥﹏≤ , 连条毛都没有 !").withEmptyIco(R.drawable.disk_file_filter_pic_no_data).withBtnEmptyEnnable(false)
.withErrorIco(R.drawable.ic_chat_empty).withLoadedErrorText("(῀( ˙᷄ỏ˙᷅ )῀)ᵒᵐᵍᵎᵎᵎ,我家程序猿跑路了 !").withbtnErrorText("去找回她!!!")
.withLoadedNoNetText("你挡着信号啦o( ̄ヘ ̄o)☞ᗒᗒ 你走").withNoNetIco(R.drawable.ic_chat_empty).withbtnNoNetText("网弄好了,重试")
.withLoadingIco(R.drawable.loading_animation).withLoadingText("加载中...").withOnRetryListener(new OnRetryListener() {
@Override
public void onRetry() {
((PicturePresenter) mPresenter).getJuzimiPictrues(params);
}
}).build();
mSwipeRefreshLayout.setOnRefreshListener(this);
mLayoutManager = new StaggeredGridLayoutManager(2,
StaggeredGridLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
if (canLoadMore)
PictureFragment.this.onScrolled(recyclerView, dx, dy);
}
});
params = new TreeMap<String, String>();
switch (mType) {
case 0:
params.put("url", "http://www.juzimi.com/meitumeiju");
break;
case 1:
params.put("url", "http://www.juzimi.com/meitumeiju/shouxiemeiju");
break;
case 2:
params.put("url", "http://www.juzimi.com/meitumeiju/jingdianduibai");
break;
}
params.put("page", String.valueOf(page));
((PicturePresenter) mPresenter).getJuzimiPictrues(params);
}
@Override
public int getContentLayout() {
return R.layout.list_fragment;
}
private TreeMap<String, String> params;
private int page = 0;
private int pageNo = 0;
private final int pageSize = 21;
@Override
public void onRefresh() {
page = 0;
params.put("page", String.valueOf(page));
((PicturePresenter) mPresenter).getJuzimiPictrues(params);
}
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int[] visibleItem = mLayoutManager.findLastVisibleItemPositions(null);
int totalItemCount = mLayoutManager.getItemCount();
//lastVisibleItem >= totalItemCount - 2 表示剩下2个item自动加载,各位自由选择
// dy>0 表示向下滑动
int lastitem = Math.max(visibleItem[0], visibleItem[1]);
if (!isLoadingMore && lastitem >= totalItemCount - 4 && dy > 0) {
isLoadingMore = true;
loadPage();//这里多线程也要手动控制isLoadingMore
}
}
private void loadPage() {
params.put("page", String.valueOf(++page));
((PicturePresenter) mPresenter).getJuzimiPictrues(params);
}
private boolean isLoadingMore;
}