package com.zcy.ghost.vivideo.ui.view;
import android.content.Context;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import com.jude.easyrecyclerview.EasyRecyclerView;
import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter;
import com.jude.easyrecyclerview.decoration.SpaceDecoration;
import com.zcy.ghost.vivideo.R;
import com.zcy.ghost.vivideo.base.RootView;
import com.zcy.ghost.vivideo.model.bean.GankItemBean;
import com.zcy.ghost.vivideo.presenter.WelfarePresenter;
import com.zcy.ghost.vivideo.presenter.contract.WelfareContract;
import com.zcy.ghost.vivideo.ui.activitys.WelfareActivity;
import com.zcy.ghost.vivideo.ui.adapter.WelfareAdapter;
import com.zcy.ghost.vivideo.utils.EventUtil;
import com.zcy.ghost.vivideo.utils.Preconditions;
import com.zcy.ghost.vivideo.utils.ScreenUtil;
import com.zcy.ghost.vivideo.widget.theme.ColorTextView;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
/**
* Description: 福利
* Creator: yxc
* date: 2016/10/24 13:43
*/
public class WelfareView extends RootView<WelfareContract.Presenter> implements WelfareContract.View, SwipeRefreshLayout.OnRefreshListener, RecyclerArrayAdapter.OnLoadMoreListener {
@BindView(R.id.title_name)
ColorTextView titleName;
@BindView(R.id.recyclerView)
EasyRecyclerView mRecyclerView;
WelfareAdapter mAdapter;
public WelfareView(Context context) {
super(context);
}
public WelfareView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void setPresenter(WelfareContract.Presenter presenter) {
mPresenter = Preconditions.checkNotNull(presenter);
}
@Override
public void showError(String msg) {
EventUtil.showToast(mContext, msg);
}
@Override
protected void getLayout() {
inflate(mContext, R.layout.activity_welfare_view, this);
}
@Override
protected void initView() {
titleName.setText("福利");
mRecyclerView.setAdapterWithProgress(mAdapter = new WelfareAdapter(mContext));
mRecyclerView.setErrorView(R.layout.view_error);
mAdapter.setMore(R.layout.view_more, this);
mAdapter.setNoMore(R.layout.view_nomore);
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
SpaceDecoration itemDecoration = new SpaceDecoration(ScreenUtil.dip2px(mContext, 8));
itemDecoration.setPaddingEdgeSide(true);
itemDecoration.setPaddingStart(true);
itemDecoration.setPaddingHeaderFooter(false);
mRecyclerView.addItemDecoration(itemDecoration);
}
@Override
protected void initEvent() {
mRecyclerView.setRefreshListener(this);
mAdapter.setOnItemClickListener(new RecyclerArrayAdapter.OnItemClickListener() {
@Override
public void onItemClick(int position) {
}
});
mAdapter.setError(R.layout.view_error_footer).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAdapter.resumeMore();
}
});
mRecyclerView.getErrorView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mRecyclerView.showProgress();
onRefresh();
}
});
}
@Override
public boolean isActive() {
return mActive;
}
@Override
public void refreshFaild(String msg) {
if (!TextUtils.isEmpty(msg))
showError(msg);
mRecyclerView.showError();
}
@Override
public void loadMoreFaild(String msg) {
if (!TextUtils.isEmpty(msg))
showError(msg);
mAdapter.pauseMore();
}
public void clearFooter() {
mAdapter.setMore(new View(mContext), this);
mAdapter.setError(new View(mContext));
mAdapter.setNoMore(new View(mContext));
}
@Override
public void showContent(List<GankItemBean> list) {
mAdapter.clear();
if (list != null && list.size() < WelfarePresenter.NUM_OF_PAGE) {
clearFooter();
}
mAdapter.addAll(list);
}
@Override
public void showMoreContent(List<GankItemBean> list) {
mAdapter.addAll(list);
}
@OnClick(R.id.rl_back)
public void onClick() {
if (mContext instanceof WelfareActivity) {
((WelfareActivity) mContext).finish();
}
}
@Override
public void onRefresh() {
mPresenter.onRefresh();
}
@Override
public void onLoadMore() {
mPresenter.loadMore();
}
}