package com.gaiagps.iburn.adapters; import android.content.Context; import android.database.Cursor; import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.gaiagps.iburn.Constants; import com.gaiagps.iburn.R; import com.gaiagps.iburn.database.ArtTable; import com.gaiagps.iburn.location.LocationProvider; /** * Bind a playa item (camp, art, event) database row to a view with a simple name & distance display, * using the device's location and date when the adapter was constructed. * <p> * TODO: Update device location periodically */ public class ArtCursorAdapter extends PlayaItemCursorAdapter<ArtCursorAdapter.ViewHolder> { static final String[] Projection = new String[]{ ArtTable.artist, ArtTable.artistLoc, ArtTable.audioTourUrl }; private int artistCol; private int artistLocCol; private int audioTourUrlCol; public ArtCursorAdapter(Context context, Cursor cursor, AdapterListener listener) { super(context, cursor, listener); this.listener = listener; LocationProvider.getLastLocation(context.getApplicationContext()). subscribe(lastLocation -> deviceLocation = lastLocation); } public static class ViewHolder extends PlayaItemCursorAdapter.ViewHolder { TextView artistView; TextView audioTourLabel; public ViewHolder(View view) { super(view); artistView = (TextView) view.findViewById(R.id.artist); audioTourLabel = (TextView) view.findViewById(R.id.audioTourLabel); } } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.art_listview_item, parent, false); ViewHolder vh = new ViewHolder(itemView); setupClickListeners(vh, Constants.PlayaItemType.ART); return vh; } @Override public void onBindViewHolder(ViewHolder viewHolder, Cursor cursor) { super.onBindViewHolder(viewHolder, cursor); if (artistCol == 0) { artistCol = cursor.getColumnIndexOrThrow(ArtTable.artist); artistLocCol = cursor.getColumnIndexOrThrow(ArtTable.artistLoc); audioTourUrlCol = cursor.getColumnIndexOrThrow(ArtTable.audioTourUrl); } boolean hasTour = !cursor.isNull(audioTourUrlCol); viewHolder.audioTourLabel.setVisibility(hasTour ? View.VISIBLE : View.GONE); viewHolder.artistView.setText(cursor.getString(artistCol)); } @Override public String[] getRequiredProjection() { return buildRequiredProjection(Projection); } }