16

Estoy trabajando en una aplicación de TV Guide que usa un ListActivity que muestra los programas de TV para un canal/un día a la vez. Estoy usando un RelativeLayout de los artículos ListView y quiero la ListView a ser algo como esto:Modificación de los datos de SimpleCursorAdapter

07:00 The Breakfast Show 
     Latest news and topical reports 
08:00 Tom and Jerry 
     More cat and mouse capers 

consigo los datos de los artículos ListView utilizando 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 es un start_timedatetime con el siguiente formato:

2011-01-23 07:00:00 

así que lo que se ve es la siguiente:

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 el anterior utilizando SimpleDateFormat ("HH:mm") por lo que sólo consiguió el papel hour:minute del campo start_time.

He encontrado la interfaz SimpleCursor.ViewBinder que sugiere que puede ser lo que quiero pero no puedo encontrar la manera de usarlo. Si estoy en lo cierto acerca de ViewBinder, agradecería algunos consejos para muestrear el código sobre cómo usarlo. De lo contrario, ¿cómo puedo lograr cambiar el campo start_time para simplemente mostrar el formato HH:mm?

Respuesta

28

se puede 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; 
    } 
}); 
+0

Gracias, que lo explica muy bien. He vuelto a trabajar tu ejemplo para que se ajuste a mi código y funciona perfectamente para mí. – Squonk

+1

Esto acaba de salvar mi trasero tratando de reordenar los recuentos de filas de un Cursor, así que gracias señor. Mi código es el siguiente: HistoryAdapter.setViewBinder (nueva SimpleCursorAdapter.ViewBinder() { \t \t \t @ Override \t \t \t setViewValue public boolean (Ver punto de vista, el cursor Cursor, int columna) { \t \t \t \t si (columna == 0) {// Supongamos que la columna 0 es la \t \t \t \t \t \t \t \t \t // fecha \t \t \t \t \t TextView tv = (Vista de texto); \t \t \t \t \t Cadena rownum = String.valueOf (cursor.getPosition() + 1); \t \t \t \t \t // aquí se utiliza SimpleDateFormat a bla bla bla \t \t \t \t \t televisión.setText (rownum); \t \t \t \t \t return true; \t \t \t \t} \t \t \t \t return false; \t \t \t} \t \t}); –

+0

@Cristian Por favor, ¿cree que podría ayudar con este http://stackoverflow.com/questions/27257416/android-how-can-i-pass-data-related-to-two-tables-to-a-the -insert-method-of-a? – eddy

Cuestiones relacionadas