package edu.vanderbilt.vm.guide.ui.adapter; import android.content.Context; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import edu.vanderbilt.vm.guide.R; import edu.vanderbilt.vm.guide.container.Tour; import edu.vanderbilt.vm.guide.db.GuideDBOpenHelper; import edu.vanderbilt.vm.guide.ui.CyclingTourGridItem; import edu.vanderbilt.vm.guide.util.DBUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; /** * Date: 6/25/13 * Time: 5:56 PM */ public class CardTourAdapter extends BaseAdapter { public CardTourAdapter(Context context, Cursor tourCursor, GuideDBOpenHelper helper) { mContext = context; mRecords = new ArrayList<TourRecord>(tourCursor.getCount()); tourCursor.moveToFirst(); do { TourRecord r = new TourRecord( DBUtils.getTourFromCursor( tourCursor, helper.getReadableDatabase())); logger.info("Tour#" + r.mTour.getUniqueId() + " : " + r.mTour.getAgenda().toString()); mRecords.add(r); } /* CONFESSION BEAR : I LOVE LISP */ while (tourCursor.moveToNext()); } public static final int NO_ID = -1; private static final Logger logger = LoggerFactory.getLogger("ui.adapter.CardTourAdapter"); private List<TourRecord> mRecords; private Context mContext; @Override public int getCount() { return mRecords.size(); } @Override public Object getItem(int position) { return mRecords.get(position).mTour; } @Override public long getItemId(int position) { return mRecords.get(position).mTour.getUniqueId(); } @Override public View getView(int position, View convertView, ViewGroup parent) { CyclingTourGridItem view = (CyclingTourGridItem) View.inflate(mContext, R.layout.cycling_tour_grid_item, null); // Not doing recycling for now, because the potential for concurrency holocaust is just too great. /*if (convertView == null) { view = new CyclingTourGridItem(mContext); } else { view = (CyclingTourGridItem) convertView; } */ view.setView(mRecords.get(position)); return view; } public static class TourRecord { public final Tour mTour; public final Drawable[] mImageList; public TourRecord(Tour tour) { mTour = tour; mImageList = new Drawable[tour.getAgenda().size()]; } } }