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(); } }