Modificar los datos de SimpleCursorAdapter
-
23-10-2019 - |
Pregunta
Estoy trabajando en una aplicación de guía de televisión que utiliza un ListActivity
Mostrando los programas de televisión para un canal / un día a la vez. Estoy usando un RelativeLayout
Para el ListView
artículos y quiero el ListView
Parecer algo así:
07:00 The Breakfast Show
Latest news and topical reports
08:00 Tom and Jerry
More cat and mouse capers
Obtengo los datos para el ListView
Elementos que usan 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 start_time
el campo es un datetime
Con el siguiente formato:
2011-01-23 07:00:00
Entonces, 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"
) Entonces solo obtengo el hour:minute
parte de start_time
campo.
He encontrado el SimpleCursor.ViewBinder
Interfaz que sugiere que puede ser lo que quiero, pero no puedo entender cómo usarlo. Si tengo razón ViewBinder
, Agradecería algunos consejos para probar el código sobre cómo usarlo. De lo contrario, ¿de qué otra manera puedo lograr cambiar el start_time
campo para simplemente mostrar HH:mm
¿formato?
Solución
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;
}
});