package treehou.se.habit.ui.adapter; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.iconics.typeface.IIcon; import java.util.ArrayList; import treehou.se.habit.R; import treehou.se.habit.util.Util; /** * A adapter for selecting an icon. */ public class IconAdapter extends RecyclerView.Adapter<IconAdapter.IconHolder> { private Context context; private ArrayList<IIcon> icons; /** * Listener that does nothing */ private IconSelectListener dummyIconSelectListener = icon -> {}; private IconSelectListener selectListener = dummyIconSelectListener; public IconAdapter(Context context) { super(); this.context = context; icons = new ArrayList<>(); icons.addAll(Util.getIcons()); } @Override public IconAdapter.IconHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_image, null); return new IconHolder(view); } @Override public void onBindViewHolder(IconAdapter.IconHolder holder, int position) { final IIcon icon = icons.get(position); holder.setDrawable(new IconicsDrawable(context, icon).color(Color.BLACK).sizeDp(20)); holder.itemView.setOnClickListener(v -> selectListener.iconSelected(icon)); } @Override public int getItemCount() { return icons.size(); } /** * Listen for icon selected. * * @param listener the listener to set. Accepts null. */ public void setIconSelectListener(IconSelectListener listener){ if(listener == null){ selectListener = dummyIconSelectListener; return; } selectListener = listener; } /** * Listens for icon select. */ public interface IconSelectListener { void iconSelected(IIcon icon); } /** * Find index of item in adapter * * @param icon * @return index of item, -1 if item weren't found */ public int getIndexOf(IIcon icon){ return icons.indexOf(icon); } public static class IconHolder extends RecyclerView.ViewHolder { private ImageView imgView; public IconHolder(View view) { super(view); imgView = (ImageView) view.findViewById(R.id.img_icon); } public void setDrawable(Drawable drawable){ imgView.setImageDrawable(drawable); } } }