package com.marverenic.music.adapter; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.marverenic.adapter.EnhancedViewHolder; import com.marverenic.adapter.HeterogeneousAdapter; import com.marverenic.music.R; public class SpacerSingleton extends HeterogeneousAdapter.SingletonSection<Void> { private final int mHeight; private boolean mVisible; public SpacerSingleton(int height) { super(null); mHeight = height; mVisible = true; } public void setShowSection(boolean visible) { mVisible = visible; } public boolean showSection() { return mVisible; } @Override public boolean showSection(HeterogeneousAdapter adapter) { if (!mVisible) { return false; } int thisIndex = adapter.getSectionIndex(this); return adapter.getSection(thisIndex - 1).getItemCount(adapter) > 0; } @Override public EnhancedViewHolder<Void> createViewHolder(HeterogeneousAdapter adapter, ViewGroup parent) { View itemView = LayoutInflater .from(parent.getContext()) .inflate(R.layout.instance_blank, parent, false); return new ViewHolder(itemView, (RecyclerView) parent); } public class ViewHolder extends EnhancedViewHolder<Void> { RecyclerView parent; public ViewHolder(View itemView, RecyclerView parent) { super(itemView); this.parent = parent; } @Override public void onUpdate(Void item, int sectionPosition) { ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) itemView.getLayoutParams(); int height = SpacerSingleton.this.mHeight; if (height >= 0) { params.height = height; } else { params.height = parent.getHeight() + height; } itemView.setLayoutParams(params); } } }