package com.aspsine.irecyclerview.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import com.aspsine.irecyclerview.R;
/**
* Created by aspsine on 16/3/14.
*/
public class LoadMoreFooterView extends FrameLayout {
private Status mStatus;
private View mLoadingView;
private View mErrorView;
private View mTheEndView;
private OnRetryListener mOnRetryListener;
public LoadMoreFooterView(Context context) {
this(context, null);
}
public LoadMoreFooterView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public LoadMoreFooterView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
LayoutInflater.from(context).inflate(R.layout.layout_irecyclerview_load_more_footer_view, this, true);
mLoadingView = findViewById(R.id.loadingView);
mErrorView = findViewById(R.id.errorView);
mTheEndView = findViewById(R.id.theEndView);
mErrorView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (mOnRetryListener != null) {
mOnRetryListener.onRetry(LoadMoreFooterView.this);
}
}
});
setStatus(Status.GONE);
}
public void setOnRetryListener(OnRetryListener listener) {
this.mOnRetryListener = listener;
}
public Status getStatus() {
return mStatus;
}
public void setStatus(Status status) {
this.mStatus = status;
change();
}
public boolean canLoadMore() {
return mStatus == Status.GONE || mStatus == Status.ERROR;
}
private void change() {
switch (mStatus) {
case GONE:
mLoadingView.setVisibility(GONE);
mErrorView.setVisibility(GONE);
mTheEndView.setVisibility(GONE);
break;
case LOADING:
mLoadingView.setVisibility(VISIBLE);
mErrorView.setVisibility(GONE);
mTheEndView.setVisibility(GONE);
break;
case ERROR:
mLoadingView.setVisibility(GONE);
mErrorView.setVisibility(VISIBLE);
mTheEndView.setVisibility(GONE);
break;
case THE_END:
mLoadingView.setVisibility(GONE);
mErrorView.setVisibility(GONE);
mTheEndView.setVisibility(VISIBLE);
break;
}
}
public enum Status {
GONE, LOADING, ERROR, THE_END
}
public interface OnRetryListener {
void onRetry(LoadMoreFooterView view);
}
}