package com.zcy.ghost.vivideo.ui.view;
import android.content.Context;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;
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.VideoType;
import com.zcy.ghost.vivideo.presenter.VideoInfoPresenter;
import com.zcy.ghost.vivideo.presenter.contract.CommentContract;
import com.zcy.ghost.vivideo.ui.adapter.CommentAdapter;
import com.zcy.ghost.vivideo.utils.EventUtil;
import com.zcy.ghost.vivideo.utils.Preconditions;
import com.zcy.ghost.vivideo.utils.ScreenUtil;
import org.simple.eventbus.EventBus;
import org.simple.eventbus.Subscriber;
import java.util.List;
import butterknife.BindView;
/**
* Description: 评论列表
* Creator: yxc
* date: 2016/9/21 14:57
*/
public class CommentView extends RootView<CommentContract.Presenter> implements CommentContract.View, SwipeRefreshLayout.OnRefreshListener, RecyclerArrayAdapter.OnLoadMoreListener {
@BindView(R.id.recyclerView)
EasyRecyclerView recyclerView;
TextView tv_empty;
CommentAdapter adapter;
public CommentView(Context context) {
super(context);
}
public CommentView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void getLayout() {
inflate(mContext, R.layout.fragment_comment_view, this);
}
@Override
protected void initView() {
recyclerView.setAdapterWithProgress(adapter = new CommentAdapter(mContext));
recyclerView.setErrorView(R.layout.view_error);
adapter.setMore(R.layout.view_more, this);
adapter.setNoMore(R.layout.view_nomore);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
SpaceDecoration itemDecoration = new SpaceDecoration(ScreenUtil.dip2px(getContext(), 8));
itemDecoration.setPaddingEdgeSide(true);
itemDecoration.setPaddingStart(true);
itemDecoration.setPaddingHeaderFooter(false);
recyclerView.addItemDecoration(itemDecoration);
tv_empty = (TextView) recyclerView.getEmptyView();
tv_empty.setText("暂无评论");
}
@Override
protected void initEvent() {
recyclerView.setRefreshListener(this);
adapter.setError(R.layout.view_error_footer).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.resumeMore();
}
});
recyclerView.getErrorView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
recyclerView.showProgress();
onRefresh();
}
});
}
@Override
public void refreshFaild(String msg) {
if (!TextUtils.isEmpty(msg))
showError(msg);
recyclerView.showError();
}
@Override
public boolean isActive() {
return mActive;
}
public void clearFooter() {
adapter.setMore(new View(mContext), this);
adapter.setError(new View(mContext));
adapter.setNoMore(new View(mContext));
}
@Override
public void showContent(List<VideoType> list) {
adapter.clear();
if (list != null && list.size() < 30) {
clearFooter();
}
adapter.addAll(list);
}
@Override
public void showMoreContent(List<VideoType> list) {
adapter.addAll(list);
}
@Override
public void setPresenter(CommentContract.Presenter presenter) {
mPresenter = Preconditions.checkNotNull(presenter);
}
@Override
public void onLoadMore() {
mPresenter.loadMore();
}
@Override
public void onRefresh() {
mPresenter.onRefresh();
}
@Override
public void showError(String msg) {
EventUtil.showToast(mContext, msg);
}
@Subscriber(tag = VideoInfoPresenter.Put_DataId)
public void setData(String dataId) {
mPresenter.setMediaId(dataId);
mPresenter.onRefresh();
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
EventBus.getDefault().register(this);
}
@Override
protected void onDetachedFromWindow() {
EventBus.getDefault().unregister(this);
super.onDetachedFromWindow();
}
}