package treehou.se.habit.ui.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import treehou.se.habit.R;
public class MenuAdapter extends RecyclerView.Adapter<MenuAdapter.MenuHolder>{
private List<MenuItem> items = new ArrayList<>();
private Context context;
private OnItemSelectListener listener = new DummyListener();
public class MenuHolder extends RecyclerView.ViewHolder {
public final TextView lblName;
public final ImageView imgImage;
public MenuHolder(View view) {
super(view);
lblName = (TextView) view.findViewById(R.id.lbl_label);
imgImage = (ImageView) view.findViewById(R.id.img_menu);
}
}
public MenuAdapter(Context context) {
this.context = context;
}
@Override
public MenuHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
LayoutInflater inflater = LayoutInflater.from(context);
View itemView = inflater.inflate(R.layout.item_menu, null);
return new MenuHolder(itemView);
}
@Override
public void onBindViewHolder(MenuHolder serverHolder, final int position) {
final MenuItem item = items.get(position);
serverHolder.imgImage.setImageResource(item.resource);
serverHolder.lblName.setText(item.label);
serverHolder.itemView.setOnClickListener(v -> listener.itemClicked(item.id));
}
@Override
public int getItemCount() {
return items.size();
}
public MenuItem getItem(int position) {
return items.get(position);
}
public void addItem(MenuItem item) {
items.add(0, item);
notifyItemInserted(0);
}
public void removeItem(int position) {
items.remove(position);
notifyItemRemoved(position);
}
public void removeItem(MenuItem item) {
int position = items.indexOf(item);
items.remove(position);
notifyItemRemoved(position);
}
public void clear() {
this.items.clear();
notifyDataSetChanged();
}
public void addAll(List<MenuItem> items) {
for(MenuItem item : items) {
this.items.add(0, item);
notifyItemRangeInserted(0, items.size());
}
}
public void setOnItemSelectListener(OnItemSelectListener listener){
this.listener = listener;
}
class DummyListener implements OnItemSelectListener{
@Override
public void itemClicked(int id) {}
}
public interface OnItemSelectListener{
void itemClicked(int id);
}
}