package treehou.se.habit.ui.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import treehou.se.habit.R; import treehou.se.habit.core.db.model.controller.ControllerDB; import treehou.se.habit.ui.control.ControllsFragment; public class ControllerAdapter extends RecyclerView.Adapter<ControllerAdapter.ControllerHolder> { private static final String TAG = ControllerAdapter.class.getSimpleName(); private List<ControllerDB> items = new ArrayList<>(); private Context context; private ItemListener itemListener = new DummyItemListener(); public class ControllerHolder extends RecyclerView.ViewHolder { public final TextView lblName; public ControllerHolder(View view) { super(view); lblName = (TextView) view.findViewById(R.id.lbl_controller); } } public ControllerAdapter(Context context) { this.context = context; } @Override public ControllerHolder onCreateViewHolder(ViewGroup viewGroup, int position) { LayoutInflater inflater = LayoutInflater.from(context); View itemView = inflater.inflate(R.layout.item_controller, null); return new ControllerHolder(itemView); } @Override public void onBindViewHolder(final ControllerHolder controllerHolder, int position) { final ControllerDB controller = items.get(position); controllerHolder.lblName.setText(controller.getName()); controllerHolder.itemView.setOnClickListener(v -> itemListener.itemClickListener(controllerHolder)); controllerHolder.itemView.setOnLongClickListener(v -> itemListener.itemLongClickListener(controllerHolder)); } @Override public int getItemCount() { return items.size(); } public interface ItemListener { void itemCountUpdated(int itemCount); void itemClickListener(ControllerHolder controllerHolder); boolean itemLongClickListener(ControllerHolder controllerHolder); } class DummyItemListener implements ItemListener { @Override public void itemCountUpdated(int itemCount) { } @Override public void itemClickListener(ControllerHolder controllerHolder) { } @Override public boolean itemLongClickListener(ControllerHolder controllerHolder) { return false; } } public void setItemListener(ItemListener itemListener) { if (itemListener == null) { this.itemListener = new DummyItemListener(); return; } this.itemListener = itemListener; } public ControllerDB getItem(int position) { return items.get(position); } public void removeItem(int position) { Log.d(TAG, "removeItem: " + position); items.remove(position); notifyItemRemoved(position); itemListener.itemCountUpdated(items.size()); } public void addItem(ControllerDB controller) { items.add(0, controller); notifyItemInserted(0); itemListener.itemCountUpdated(items.size()); } public void addAll(List<ControllerDB> controllers) { for (ControllerDB controller : controllers) { items.add(0, controller); notifyItemRangeInserted(0, controllers.size()); } itemListener.itemCountUpdated(items.size()); } }