package com.tutosandroidfrance.designsupporttest;
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 com.squareup.picasso.Picasso;
import com.tutosandroidfrance.designsupporttest.model.MyObject;
import java.util.ArrayList;
import java.util.List;
import butterknife.ButterKnife;
import butterknife.InjectView;
/**
* Created by florentchampigny
*/
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ContentViewHolder> {
public interface RecyclerViewAdapterCallBack {
void onRecyclerViewElementClicked(View view, int position, MyObject element);
}
RecyclerViewAdapterCallBack callback;
List<MyObject> contents = new ArrayList<>();
public RecyclerViewAdapter(RecyclerViewAdapterCallBack callback) {
this.callback = callback;
}
public void addObjects(List<MyObject> contents) {
this.contents.addAll(contents);
super.notifyDataSetChanged();
}
@Override
public int getItemCount() {
return contents.size();
}
@Override
public ContentViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.cell_cards, parent, false);
return new ContentViewHolder(view, callback);
}
@Override
public void onBindViewHolder(ContentViewHolder holder, int position) {
holder.bind(contents.get(position));
}
public class ContentViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private RecyclerViewAdapterCallBack callback;
private MyObject myObject;
@InjectView(R.id.text)
TextView textViewView;
@InjectView(R.id.image)
ImageView imageView;
public ContentViewHolder(View itemView, RecyclerViewAdapterCallBack callback) {
super(itemView);
this.callback = callback;
ButterKnife.inject(this, itemView);
this.itemView.setOnClickListener(this);
}
public void bind(MyObject myObject) {
this.myObject = myObject;
textViewView.setText(myObject.getText());
Picasso.with(imageView.getContext()).load(myObject.getImageUrl()).centerCrop().fit().into(imageView);
}
@Override
public void onClick(View v) {
this.callback.onRecyclerViewElementClicked(this.itemView, this.getAdapterPosition(), myObject);
}
}
}