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?

¿Fue útil?

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;
    }
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top