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.InstanceAlbumBinding; import com.marverenic.music.model.Album; import com.marverenic.music.model.ModelUtil; import com.marverenic.music.viewmodel.AlbumViewModel; import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView; import java.util.List; public class AlbumSection extends HeterogeneousAdapter.ListSection<Album> implements FastScrollRecyclerView.SectionedAdapter { private FragmentManager mFragmentManager; public AlbumSection(AppCompatActivity activity, @NonNull List<Album> data) { this(activity.getSupportFragmentManager(), data); } public AlbumSection(Fragment fragment, @NonNull List<Album> data) { this(fragment.getFragmentManager(), data); } public AlbumSection(FragmentManager fragmentManager, @NonNull List<Album> data) { super(data); mFragmentManager = fragmentManager; } @Override public int getId(int position) { return (int) get(position).getAlbumId(); } @Override public EnhancedViewHolder<Album> createViewHolder(HeterogeneousAdapter adapter, ViewGroup parent) { InstanceAlbumBinding binding = InstanceAlbumBinding.inflate( LayoutInflater.from(parent.getContext()), parent, false); return new ViewHolder(binding); } @NonNull @Override public String getSectionName(int position) { char firstChar = ModelUtil.sortableTitle(get(position).getAlbumName()).charAt(0); return Character.toString(firstChar).toUpperCase(); } private class ViewHolder extends EnhancedViewHolder<Album> { private InstanceAlbumBinding mBinding; public ViewHolder(InstanceAlbumBinding binding) { super(binding.getRoot()); mBinding = binding; mBinding.setViewModel(new AlbumViewModel(itemView.getContext(), mFragmentManager)); } @Override public void onUpdate(Album item, int sectionPosition) { mBinding.getViewModel().setAlbum(item); mBinding.executePendingBindings(); } } }