package com.fastaccess.ui.adapter; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.ViewGroup; import com.fastaccess.data.dao.AppsModel; import com.fastaccess.ui.adapter.viewholder.SelectFolderAppsViewHolder; import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Created by Kosh on 30 Aug 2016, 11:42 PM */ public class SelectFolderAppsAdapter extends BaseRecyclerAdapter<AppsModel, SelectFolderAppsViewHolder, SelectFolderAppsViewHolder.OnItemClickListener<AppsModel>> { private Map<String, AppsModel> selection; public SelectFolderAppsAdapter(@NonNull List<AppsModel> data, @Nullable SelectFolderAppsViewHolder.OnItemClickListener<AppsModel> listener, Map<String, AppsModel> selection) { super(data, listener); this.selection = selection; } @Override protected SelectFolderAppsViewHolder viewHolder(ViewGroup parent, int viewType) { return SelectFolderAppsViewHolder.newInstance(parent, this); } @Override protected void onBindView(SelectFolderAppsViewHolder holder, int position) { AppsModel model = getItem(position); holder.bind(model, isSelected(model.getActivityInfoName())); } public void select(String packageName, int position, boolean select) { if (select) selection.put(packageName, getItem(position)); else selection.remove(packageName); notifyItemChanged(position); } public boolean isSelected(@NonNull String packageName) { return selection.get(packageName) != null; } public boolean hasSelection() { return selection != null && !selection.isEmpty(); } public void clearSelection() { if (hasSelection()) selection.clear(); notifyDataSetChanged(); } public int selectionSize() { return selection != null ? selection.size() : 0; } public List<AppsModel> getSelections() { return new ArrayList<>(selection.values()); } }