package org.onebrick.android.adapters;
import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.nostra13.universalimageloader.core.ImageLoader;
import org.onebrick.android.R;
import org.onebrick.android.helpers.DateTimeFormatter;
import org.onebrick.android.models.Event;
import butterknife.ButterKnife;
import butterknife.Bind;
public class EventListAdapter extends CursorAdapter {
ImageLoader imgLoader;
DateTimeFormatter dtf;
static class ViewHolder {
@Bind(R.id.front)
LinearLayout front;
@Bind(R.id.ivListItemEventImage)
ImageView ivEventImage;
@Bind(R.id.tvListItemEventName)
TextView tvEventName;
@Bind(R.id.tvListItemEventAddress)
TextView tvEventAddress;
@Bind(R.id.tvListItemEventDate)
TextView tvEventDate;
@Bind(R.id.btnListItemRsvp)
Button btnRsvp;
ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
public EventListAdapter(Context context, Cursor cursor) {
super(context, cursor, 0);
imgLoader = ImageLoader.getInstance();
dtf = DateTimeFormatter.getInstance();
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
final View view = LayoutInflater.from(context).inflate(R.layout.list_item_event, parent, false);
final ViewHolder viewHolder = new ViewHolder(view);
// TODO: handle no events case
view.setTag(viewHolder);
return view;
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
ViewHolder viewHolder = (ViewHolder) view.getTag();
// Return the completed view to render on screen
final Event event = Event.fromCursor(cursor);
viewHolder.front.setVisibility(View.VISIBLE);
String[] photos = event.getPhotos();
if (photos != null && photos.length > 0) {
imgLoader.displayImage(photos[0], viewHolder.ivEventImage);
}
viewHolder.tvEventName.setText(event.getTitle());
viewHolder.tvEventAddress.setText(event.getAddress());
viewHolder.tvEventDate.setText(DateTimeFormatter.getInstance().getFormattedEventStartDate(
event.getStartDate()));
viewHolder.btnRsvp.setVisibility(View.GONE);
}
}