package com.ly.supermvp.view.fragment;
import android.view.View;
import com.ly.supermvp.R;
import com.ly.supermvp.adapter.PictureGridAdapter;
import com.ly.supermvp.delegate.PicturesFragmentDelegate;
import com.ly.supermvp.delegate.SwipeRefreshAndLoadMoreCallBack;
import com.ly.supermvp.model.OnNetRequestListener;
import com.ly.supermvp.model.pictures.PictureBody;
import com.ly.supermvp.model.pictures.PicturesModel;
import com.ly.supermvp.model.pictures.PicturesModelImpl;
import com.ly.supermvp.mvp_frame.presenter.FragmentPresenter;
import java.util.ArrayList;
import java.util.List;
/**
* <Pre>
* 美图大全fragment
* </Pre>
*
* @author 刘阳
* @version 1.0
* <p/>
* Create by 2016/3/21 14:39
* @see https://github.com/liuyanggithub/SuperMvp
*/
public class PicturesFragment extends FragmentPresenter<PicturesFragmentDelegate> implements SwipeRefreshAndLoadMoreCallBack, PicturesFragmentDelegate.FloatingActionButtonListener {
private PicturesModel mPicturesModel;
private PictureGridAdapter mPictureGridAdapter;
private int mPageNum = 1;
private String mPictureId = PicturesModel.DEFAULT_TYPE;
private List<PictureBody> mList = new ArrayList<>();
public static PicturesFragment newInstance() {
PicturesFragment fragment = new PicturesFragment();
return fragment;
}
@Override
protected Class<PicturesFragmentDelegate> getDelegateClass() {
return PicturesFragmentDelegate.class;
}
@Override
protected void initData() {
super.initData();
mPicturesModel = new PicturesModelImpl();
mPictureGridAdapter = new PictureGridAdapter(mList, getActivity());
mPictureGridAdapter.setOnImageClickListener(new PictureGridAdapter.OnImageClickListener() {
@Override
public void onImageClick(View view, int position) {
viewDelegate.showDialog(mList.get(position).list.get(0).big);
}
});
viewDelegate.setListAdapter(mPictureGridAdapter);
//注册下拉刷新
viewDelegate.registerSwipeRefreshCallBack(this);
//注册加载更多
viewDelegate.registerLoadMoreCallBack(this, mPictureGridAdapter);
netLoadPictures(mPictureId, true);
}
@Override
protected void initView() {
super.initView();
viewDelegate.setFloatingActionButtonListener(this);
}
/**
* 网络获取图片
*/
private void netLoadPictures(String id, final boolean isRefresh) {
if (isRefresh) {
mPageNum = 1;
} else {
mPageNum++;
}
mPicturesModel.netLoadPictures(id, mPageNum, new OnNetRequestListener<List<PictureBody>>() {
@Override
public void onStart() {
viewDelegate.showRefreshLayout();
}
@Override
public void onFinish() {
}
@Override
public void onSuccess(List<PictureBody> data) {
viewDelegate.showContent();
if (isRefresh) {
if (!mList.isEmpty()) {
mList.clear();
}
}
mList.addAll(data);
mPictureGridAdapter.notifyDataSetChanged();
}
@Override
public void onFailure(Throwable t) {
viewDelegate.showError(R.string.load_error, new View.OnClickListener() {
@Override
public void onClick(View v) {
netLoadPictures(mPictureId, true);
}
});
}
});
}
@Override
public void refresh() {
netLoadPictures(mPictureId, true);
}
@Override
public void loadMore() {
netLoadPictures(mPictureId, false);
}
@Override
public void onClick(String id) {
mPictureId = id;
refresh();
}
}