package com.nilhcem.bblfr.ui.baggers.list.filter; import android.support.annotation.NonNull; import android.view.View; import android.view.ViewGroup; import com.nilhcem.bblfr.ui.BaseHeaderAdapter; import java.util.Collections; import java.util.List; public class TagsListAdapter extends BaseHeaderAdapter<Void, TagsListEntry, TagsListHeaderView, TagsListEntryView> implements View.OnClickListener { public interface OnFilterChangeListener { void onFilterChanged(List<String> selectedTagsIds); } private final OnFilterChangeListener mListener; public TagsListAdapter(@NonNull OnFilterChangeListener listener) { mListener = listener; } @Override protected TagsListEntryView onCreateItemView(ViewGroup parent) { return new TagsListEntryView(parent); } @Override protected TagsListHeaderView onCreateHeaderView(ViewGroup parent) { return new TagsListHeaderView(parent); } @Override protected void onBindItemView(TagsListEntryView view, TagsListEntry item) { super.onBindItemView(view, item); view.setOnClickListener(this); } public void resetFilter() { for (TagsListEntry item : mItems) { item.resetActivatedState(); } updateItems(mItems, true); } @Override public void updateItems(List<TagsListEntry> items) { this.updateItems(items, true); } public void updateItems(List<TagsListEntry> items, boolean notifyOnFilterChange) { super.updateItems(items, null, true); if (notifyOnFilterChange) { mListener.onFilterChanged(Collections.emptyList()); } } @Override public void onClick(View v) { TagsListEntryView view = (TagsListEntryView) v.getTag(); // Toggle selected tag, then notify. view.getData().toggleActivatedState(); notifyItemChanged(view.getAdapterPosition()); mListener.onFilterChanged(TagsListEntry.getSelectedTagsIds(mItems)); } }