package treehou.se.habit.ui.adapter;
import android.support.v7.widget.RecyclerView;
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 se.treehou.ng.ohcommunicator.connector.models.OHBinding;
import treehou.se.habit.R;
import treehou.se.habit.ui.bindings.BindingsFragment;
public class BindingAdapter extends RecyclerView.Adapter<BindingAdapter.BindingHolder> {
private BindingsFragment bindingsFragment;
private List<OHBinding> bindings = new ArrayList<>();
private ItemClickListener itemClickListener;
public class BindingHolder extends RecyclerView.ViewHolder {
private TextView lblName;
private TextView lblAuthor;
private TextView lblDescription;
public BindingHolder(View itemView) {
super(itemView);
lblName = (TextView) itemView.findViewById(R.id.lbl_name);
lblAuthor = (TextView) itemView.findViewById(R.id.lbl_author);
lblDescription = (TextView) itemView.findViewById(R.id.lbl_description);
}
}
public BindingAdapter(BindingsFragment bindingsFragment) {
this.bindingsFragment = bindingsFragment;
}
@Override
public BindingHolder onCreateViewHolder(ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(bindingsFragment.getActivity());
View itemView = inflater.inflate(R.layout.item_binding, null);
return new BindingHolder(itemView);
}
@Override
public void onBindViewHolder(final BindingHolder holder, int position) {
final OHBinding binding = bindings.get(position);
holder.lblName.setText(binding.getName());
holder.lblAuthor.setText(binding.getAuthor());
holder.lblDescription.setText(binding.getDescription());
holder.itemView.setOnClickListener(v -> itemClickListener.onClick(binding));
}
/**
* Set listener listening for selections of bindings.
* @param itemClickListener
*/
public void setItemClickListener(ItemClickListener itemClickListener) {
if(itemClickListener == null){
itemClickListener = new DummyItemListener();
}
this.itemClickListener = itemClickListener;
}
@Override
public int getItemCount() {
return bindings.size();
}
public void addBinding(OHBinding binding) {
bindings.add(binding);
notifyItemInserted(bindings.size() - 1);
}
public void setBindings(List<OHBinding> newBindings) {
bindings.clear();
bindings.addAll(newBindings);
notifyDataSetChanged();
}
public interface ItemClickListener{
void onClick(OHBinding binding);
}
private class DummyItemListener implements ItemClickListener {
@Override
public void onClick(OHBinding binding) {}
}
}