android - Modificando los datos de SimpleCursorAdapter
android-listview android-viewbinder (1)
Puedes hacer algo como esto:
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;
}
});
Estoy trabajando en una aplicación de la Guía de TV que utiliza un ListActivity
muestra los programas de TV para un canal / un día a la vez. Estoy usando un RelativeLayout
para los elementos de ListView
y quiero que ListView
vea algo como esto:
07:00 The Breakfast Show
Latest news and topical reports
08:00 Tom and Jerry
More cat and mouse capers
Obtengo los datos para los elementos de ListView
usando el siguiente código:
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);
Mi problema es que el campo start_time
es una datetime
y datetime
con el siguiente formato:
2011-01-23 07:00:00
así que lo que obtengo es esto:
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
Lo que me gustaría hacer es formatear lo anterior usando SimpleDateFormat
( "HH:mm"
), así que solo obtengo la parte de hour:minute
del campo start_time
.
He encontrado la interfaz SimpleCursor.ViewBinder
que sugiere que puede ser lo que quiero pero no puedo averiguar cómo usarlo. Si estoy en lo cierto acerca de ViewBinder
, apreciaría algunos consejos para probar el código sobre cómo usarlo. De lo contrario, ¿cómo puedo lograr cambiar el campo start_time
para mostrar simplemente el formato HH:mm
?