package treehou.se.habit.ui.adapter;
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
import treehou.se.habit.R;
import treehou.se.habit.core.db.model.controller.ControllerDB;
public class ImageItemAdapter extends RecyclerView.Adapter<ImageItemHolder>{
private static final String TAG = "ImageItemAdapter";
private List<ImageItem> items = new ArrayList<>();
private Context context;
private @LayoutRes int layoutItem;
private OnItemClickListener itemClickListener;
public ImageItemAdapter(Context context) {
this(context, R.layout.item_menu_image);
}
public ImageItemAdapter(Context context, @LayoutRes int layout) {
this.context = context;
this.layoutItem = layout;
}
@Override
public ImageItemHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
LayoutInflater inflater = LayoutInflater.from(context);
View itemView = inflater.inflate(layoutItem, viewGroup, false);
return new ImageItemHolder(itemView);
}
@Override
public void onBindViewHolder(final ImageItemHolder itemHolder, final int position) {
final ImageItem item = items.get(position);
itemHolder.lblName.setText(item.getName());
itemHolder.imgIcon.setImageResource(item.getImage());
itemHolder.itemView.setOnClickListener(v -> {
if(itemClickListener != null){
itemClickListener.onItemClicked(item.getId());
}
});
}
@Override
public int getItemCount() {
return items.size();
}
public ImageItem getItem(int position) {
return items.get(position);
}
public void addItem(ImageItem item) {
items.add(items.size(), item);
notifyItemInserted(items.size()-1);
}
public void removeItem(int position) {
Log.d(TAG, "removeItem: " + position);
items.remove(position);
notifyItemRemoved(position);
}
public void removeItem(ControllerDB controller) {
int position = items.indexOf(controller);
items.remove(position);
notifyItemRemoved(position);
}
public void addAll(List<ImageItem> items) {
this.items.addAll(items);
notifyDataSetChanged();
}
public void setItemClickListener(OnItemClickListener itemClickListener) {
this.itemClickListener = itemClickListener;
}
public interface OnItemClickListener{
void onItemClicked(int id);
}
}