package com.byoutline.kickmaterial.adapters;
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 com.byoutline.kickmaterial.R;
import com.byoutline.kickmaterial.model.Project;
import com.byoutline.secretsauce.utils.ViewUtils;
import com.squareup.picasso.Picasso;
import java.util.ArrayList;
import java.util.List;
/**
* Displays search results
*/
public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder> {
private final List<Project> dataset = new ArrayList<>();
private Context context;
private ProjectClickListener projectClickListener;
public SearchAdapter(Context context, ProjectClickListener projectClickListener) {
this.context = context;
this.projectClickListener = projectClickListener;
}
public Project getItem(int position) {
return dataset.get(position);
}
@Override
public SearchAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new view by inflating the row item xml.
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.search_item, parent, false);
ViewHolder holder = new ViewHolder(v, projectClickListener);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Project project = getItem(position);
if (project != null) {
ViewUtils.setText(holder.titleTv, project.getProjectName());
ViewUtils.setText(holder.descTv, project.desc);
Picasso.with(context).load(project.getPhotoUrl()).into(holder.photoIv);
}
}
@Override
public int getItemCount() {
return dataset.size();
}
public void setItems(List<Project> items) {
synchronized (dataset) {
dataset.clear();
dataset.addAll(items);
notifyDataSetChanged();
}
}
public void clear() {
synchronized (dataset) {
dataset.clear();
notifyDataSetChanged();
}
}
// Create the ViewHolder class to keep references to your views
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public ProjectClickListener listener;
ImageView photoIv;
TextView titleTv;
TextView descTv;
/**
* @param v The container view which holds the elements from the row item xml
*/
public ViewHolder(View v, ProjectClickListener projectClickListener) {
super(v);
this.listener = projectClickListener;
photoIv = (ImageView) v.findViewById(R.id.search_item_photo_iv);
titleTv = (TextView) v.findViewById(R.id.search_item_title_tv);
descTv = (TextView) v.findViewById(R.id.search_item_desc_tv);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (listener != null) {
SharedViews views = new SharedViews(photoIv, titleTv);
listener.projectClicked(getAdapterPosition(), views);
}
}
}
}