package com.quickblox.sample.core.ui.adapter; import android.content.Context; import java.util.ArrayList; import java.util.Collection; import java.util.List; public abstract class BaseSelectableListAdapter<T> extends BaseListAdapter<T> { protected List<T> selectedItems; public BaseSelectableListAdapter(Context context, List<T> objectsList) { super(context, objectsList); selectedItems = new ArrayList<>(); } public void toggleSelection(int position) { T item = getItem(position); toggleSelection(item); } public void toggleSelection(T item) { if (selectedItems.contains(item)) { selectedItems.remove(item); } else { selectedItems.add(item); } notifyDataSetChanged(); } public void selectItem(int position) { T item = getItem(position); selectItem(item); } public void selectItem(T item) { if (selectedItems.contains(item)) { return; } selectedItems.add(item); notifyDataSetChanged(); } public Collection<T> getSelectedItems() { return selectedItems; } protected boolean isItemSelected(int position) { return !selectedItems.isEmpty() && selectedItems.contains(getItem(position)); } public void clearSelection() { selectedItems.clear(); notifyDataSetChanged(); } }