package edu.stanford.cs.sujogger.util; import edu.stanford.cs.sujogger.R; import edu.stanford.cs.sujogger.db.GPStracking.Stats; import android.content.Context; import android.database.Cursor; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.CursorAdapter; import android.widget.TextView; public class LeaderBoardAdapter extends CursorAdapter { private static final String TAG = "OGT.LeaderBoardAdapter"; private boolean mFlinging = false; private Cursor mCursor; private int mStatisticId; private boolean mIsGroup; public LeaderBoardAdapter(Context context, Cursor c, int statisticId, boolean isGroup) { this(context, c, true, statisticId, isGroup); } public LeaderBoardAdapter(Context context, Cursor c, boolean autoRequery, int statisticId, boolean isGroup) { super(context, c, autoRequery); mCursor = c; mStatisticId = statisticId; mIsGroup = isGroup; } public void changeCursor(Cursor cursor, int statisticId, boolean isGroup) { mCursor = cursor; mStatisticId = statisticId; mIsGroup = isGroup; super.changeCursor(cursor); } public Object getItem(int position) { mCursor.moveToPosition(position); return mCursor.getInt(6); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (position >= mCursor.getCount()) return null; View ret = super.getView(position, convertView, parent); //TODO: Facebook /* if (ret != null && !mIsGroup) { RemoteImageView image = (RemoteImageView) ret.findViewById(R.id.user_image); if (image != null && !mFlinging) { Log.d(TAG, "getView(): trying to fetch image"); image.loadImage(); } }*/ return ret; } @Override public void bindView(View view, Context context, Cursor cursor) { int value = cursor.getInt(3); TextView name = (TextView)view.findViewById(R.id.lb_name); RemoteImageView image = (RemoteImageView)view.findViewById(R.id.user_image); TextView valueText = (TextView)view.findViewById(R.id.lb_value); int place = cursor.getPosition() + 1; if (mIsGroup) { String groupName = cursor.getString(7); name.setText(place + ". " + groupName); image.setVisibility(View.GONE); } else { String firstName = cursor.getString(8); String lastName = cursor.getString(9); String imgUrl = cursor.getString(10); //TODO: Facebook //image.setVisibility(View.VISIBLE); image.setVisibility(View.GONE); name.setText(place + ". " + firstName + " " + lastName); //if (imgUrl != null) { // image.setLocalURI(Common.getCacheFileName(imgUrl)); // image.setRemoteURI(imgUrl); //} } switch(mStatisticId) { case Stats.DISTANCE_RAN_ID: case Stats.DISTANCE_RAN_WEEK_ID: case Stats.DISTANCE_RAN_MONTH_ID: valueText.setText(Common.distanceString(context, value)); break; case Stats.RUNNING_TIME_ID: case Stats.RUNNING_TIME_WEEK_ID: case Stats.RUNNING_TIME_MONTH_ID: valueText.setText(Common.durationString(context, value)); break; case Stats.AVG_SPEED_ID: case Stats.AVG_SPEED_WEEK_ID: case Stats.AVG_SPEED_MONTH_ID: valueText.setText(Common.speedString(context, ((double)value)/((double)Constants.SPEED_CONVERSION_RATIO))); break; case Stats.NUM_RUNS_ID: case Stats.NUM_RUNS_WEEK_ID: case Stats.NUM_RUNS_MONTH_ID: case Stats.NUM_PARTNER_RUNS_ID: case Stats.NUM_PARTNER_RUNS_WEEK_ID: case Stats.NUM_PARTNER_RUNS_MONTH_ID: valueText.setText(String.valueOf(value)); break; } } @Override public View newView(Context context, Cursor cursor, ViewGroup parent) { final View v = LayoutInflater.from(context).inflate(R.layout.leaderboard_item, parent, false); bindView(v, context, cursor); return v; } }