I am using a SimpleCursorAdapter to populate an Android ListView, and was wondering how I should go about getting all of the timestamps I get from a database, each in \"DATE
I found it easiest to do the following:
SimpleDateFormat oldTime = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat newTime = new SimpleDateFormat("hh:mm:ss a");
String stringTime;
try {
String reformattedStr = newTime.format(oldTime.parse(stringTime));
} catch (ParseException e) {
e.printStackTrace();
}
You're going to have to create a custom CursorAdapter to be able to format your timestamps.
public class MyAdapter extends CursorAdapter {
private final LayoutInflater mInflater;
public MyAdapter(Context context, Cursor cursor) {
super(context, cursor, false);
mInflater = LayoutInflater.from(context);
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return mInflater.inflate(R.layout.program_date, parent, false);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
long time = cursor.getLong(cursor.getColumnIndex("DATE_DATE")) * 1000L;
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(time);
String format = "M/dd h:mm a";
SimpleDateFormat sdf = new SimpleDateFormat(format);
String dateString = sdf.format(cal.getTime());
((TextView) view.findViewById(R.id.text1)).setText(dateString);
}
}
The list to change the String format
to your liking is here.
You'd then use this adapter with
Cursor programDateCursor = mDbAdapter.loadProgramDates();
startManagingCursor(programDateCursor);
setListAdapter(new MyAdapter(this, programDateCursor));
Store Unix epoch dates as INTEGER
type in SQLite database. Then in Java, initialize them with new Date(value)
(or value*1000
, I'm not sure) and use SimpleDateFormat
to format dates in list adapter.
I think that's the most convenient way for the limited information you've provided.