package nucleus.example.util.adapters;
import android.view.LayoutInflater;
import android.view.ViewGroup;
public abstract class BaseProgressAdapter extends BaseRecyclerViewAdapter {
private final int progressViewId;
private boolean progress;
public BaseProgressAdapter(int progressViewId, ViewHolderType... types) {
super(types);
this.progressViewId = progressViewId;
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return viewType == progressViewId ?
new EmptyViewHolder(LayoutInflater.from(parent.getContext()).inflate(progressViewId, parent, false)) :
super.onCreateViewHolder(parent, viewType);
}
@Override
public void onBindViewHolder(BaseViewHolder holder, int position) {
if (position != super.getItemCount()) {
holder.bind(getItems().get(position));
}
}
@Override
public int getItemViewType(int position) {
return position == super.getItemCount() ? progressViewId :
super.getItemViewType(position);
}
@Override
public int getItemCount() {
return super.getItemCount() + (progress ? 1 : 0);
}
public void showProgress() {
if (!progress) {
progress = true;
notifyItemInserted(getItemCount());
}
}
public void hideProgress() {
if (progress) {
progress = false;
notifyItemRemoved(getItemCount());
}
}
}