package com.marverenic.music.adapter;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.marverenic.adapter.EnhancedViewHolder;
import com.marverenic.adapter.HeterogeneousAdapter;
import com.marverenic.music.databinding.InstanceGenreBinding;
import com.marverenic.music.model.Genre;
import com.marverenic.music.model.ModelUtil;
import com.marverenic.music.viewmodel.GenreViewModel;
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
import java.util.List;
public class GenreSection extends HeterogeneousAdapter.ListSection<Genre>
implements FastScrollRecyclerView.SectionedAdapter {
private FragmentManager mFragmentManager;
public GenreSection(AppCompatActivity activity, @NonNull List<Genre> data) {
this(activity.getSupportFragmentManager(), data);
}
public GenreSection(Fragment fragment, @NonNull List<Genre> data) {
this(fragment.getFragmentManager(), data);
}
public GenreSection(FragmentManager fragmentManager, @NonNull List<Genre> data) {
super(data);
mFragmentManager = fragmentManager;
}
@Override
public int getId(int position) {
return (int) get(position).getGenreId();
}
@Override
public EnhancedViewHolder<Genre> createViewHolder(HeterogeneousAdapter adapter,
ViewGroup parent) {
InstanceGenreBinding binding = InstanceGenreBinding.inflate(
LayoutInflater.from(parent.getContext()), parent, false);
return new ViewHolder(binding);
}
@NonNull
@Override
public String getSectionName(int position) {
char firstChar = ModelUtil.sortableTitle(get(position).getGenreName()).charAt(0);
return Character.toString(firstChar).toUpperCase();
}
private class ViewHolder extends EnhancedViewHolder<Genre> {
private InstanceGenreBinding mBinding;
public ViewHolder(InstanceGenreBinding binding) {
super(binding.getRoot());
mBinding = binding;
mBinding.setViewModel(new GenreViewModel(itemView.getContext(), mFragmentManager));
}
@Override
public void onUpdate(Genre item, int sectionPosition) {
mBinding.getViewModel().setGenre(item);
mBinding.executePendingBindings();
}
}
}