I'm working on a TV Guide app which uses a ListActivity
showing the TV shows for one channel / one day at a time. I'm using a RelativeLayout
for the ListView
items and I want the ListView
to look something like this:
07:00 The Breakfast Show
Latest news and topical reports
08:00 Tom and Jerry
More cat and mouse capers
I get the data for the ListView
items using the following code:
Cursor cursor = db.rawQuery(SELECT blah,blah,blah);
String[] columnNames = new String[]{"start_time","title", "subtitle"};
int[] resIds = new int[]{R.id.start_time_short, R.id.title, R.id.subtitle};
adapter = new SimpleCursorAdapter(this, R.layout.guide_list_item, cursor, columnNames, resIds);
My problem is that the start_time
field is a datetime
with the following format:
2011-01-23 07:00:00
so what I get is this:
2011-01-23 07:00:00 The Breakfast Show
Latest news and topical reports
2011-01-23 08:00:00 Tom and Jerry
More cat and mouse capers
What I'd like to do is format the above using SimpleDateFormat
("HH:mm"
) so I only get the hour:minute
part of the start_time
field.
I've found the SimpleCursor.ViewBinder
interface which suggests it may be what I want but I can't figure out how to use it. If I'm right about ViewBinder
, I'd appreciate some pointers to sample code on how to use it. Otherwise, how else can I achieve changing the start_time
field to simply show HH:mm
format?
An easy adapter to map columns from a cursor to TextViews or ImageViews defined in an XML file. You can specify which columns you want, which views you want to display the columns, and the XML file that defines the appearance of these views.
Try this: my_listview. setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { } });
You can do something like this:
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int column) {
if( column == 0 ){ // let's suppose that the column 0 is the date
TextView tv = (TextView) view;
String dateStr = cursor.getString(cursor.getColumnIndex("name_of_the_date_column"));
// here you use SimpleDateFormat to bla blah blah
tv.setText(theFormatedDate);
return true;
}
return false;
}
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With