package de.nisble.droidsweeper.gui;
import java.util.ArrayList;
import java.util.Date;
import android.content.Context;
import android.text.format.DateFormat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
import de.nisble.droidsweeper.R;
import de.nisble.droidsweeper.game.database.DSDBGameEntry;
/** High score list adapter.
* @author Moritz Nisblé moritz.nisble@gmx.de */
public class HighScoreListAdapter extends BaseAdapter {
// private static final String CLASSNAME =
// HighScoreListAdapter.class.getSimpleName();
private ArrayList<DSDBGameEntry> mEntries;
private final LayoutInflater mLayoutInflater;
private final java.text.DateFormat mDateFormat;
private final java.text.DateFormat mTimeFormat;
/** Create a new list adapter for the given highscores.
* @param c The application context.
* @param highscores The highscores as ArrayList of {@link DSDBGameEntry
* database entries}. */
public HighScoreListAdapter(Context c, ArrayList<DSDBGameEntry> highscores) {
mEntries = highscores;
mLayoutInflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mDateFormat = android.text.format.DateFormat.getDateFormat(c);
mTimeFormat = android.text.format.DateFormat.getTimeFormat(c);
}
@Override
public int getCount() {
return mEntries.size();
}
@Override
public Object getItem(int position) {
return mEntries.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LinearLayout view;
if (convertView != null) {
view = (LinearLayout) convertView;
} else {
view = (LinearLayout) mLayoutInflater.inflate(R.layout.layout_timelist_item, parent, false);
}
// TODO: Remove redundant Position item!
((TextView) view.findViewById(R.id.tvTimeListItem_Position)).setText(String.valueOf(position + 1));
((TextView) view.findViewById(R.id.tvTimeListItem_Name)).setText(mEntries.get(position).NAME);
((TextView) view.findViewById(R.id.tvTimeListItem_Time)).setText(DateFormat.format("mm:ss",
mEntries.get(position).PLAYTIME).toString());
// Localize epoch time and display date and time
Date date = new Date(mEntries.get(position).EPOCHTIME);
((TextView) view.findViewById(R.id.tvTimeListItem_Date)).setText(mDateFormat.format(date) + " "
+ mTimeFormat.format(date));
return view;
}
}