Cambio de valores desde Cursor mediante SimpleCursorAdapter

Tengo una tabla de base de datos con las columnas {Nombre, Hora (formato UTC), Latitud, Longitud}

Muestra la tabla usando un ListActivity con un SimpleCursorAdapter.

Me gustaría que la columna Tiempo mostrar la hora en un formato legible por humanos (13-07-2010 10:40) en lugar de en formato UTC (18190109089).

¿Cómo puedo especificar que los valores de la columna Tiempo necesitan algún filtrado / adaptación?

POSIBLE SOLUCIÓN (con un problema):

SimpleCursorAdapter ofrece el método:

setCursorToStringConverter(SimpleCursorAdapter.CursorToStringConverter cursorToStringConverter); 

Para especificar cómo una clase que es capaz de convertir un Cursor a CharSequence (convertToString (Cursor cursor). De todos modos no sé en qué formato debe ser el parámetro CharSequence de retorno!

4 Solutions collect form web for “Cambio de valores desde Cursor mediante SimpleCursorAdapter”


La forma más sencilla de formatear un valor de cursor es usar SimpleCursorAdapter.setViewBinder (..):

 SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list, cursor, new String[] { Definition.Item.TITLE, Definition.Item.CREATE_DATE }, new int[] { R.id.title, R.id.createDate}); adapter.setViewBinder(new ViewBinder() { public boolean setViewValue(View aView, Cursor aCursor, int aColumnIndex) { if (aColumnIndex == 2) { String createDate = aCursor.getString(aColumnIndex); TextView textView = (TextView) aView; textView.setText("Create date: " + MyFormatterHelper.formatDate(getApplicationContext(), createDate)); return true; } return false; } }); 

También tuve el mismo problema después de una larga lucha por fin encontré respuesta 🙂 (ver más abajo)

 use setViewText (TextView v, String text) 

por ejemplo

 SimpleCursorAdapter shows = new SimpleCursorAdapter(this, R.layout.somelayout, accountCursor, from, to) { @Override public void setViewText(TextView v, String text) { super.setViewText(v, convText(v, text)); } }; private String convText(TextView v, String text) { switch (v.getId()) { case R.id.date: String formatedText = text; //do format return formatedText; } return text; } 

Puede utilizar setViewBinder() o subclase SimpleCursorAdapter y reemplazar bindView() .

Puede utilizar la sintaxis de SQLite en esa columna para formatear la fecha.

Algo como esto lo hará

 SELECT strftime('%d-%m-%Y %H:%M',1092941466,'unixepoch'); SELECT strftime('%d-%m-%Y %H:%M',timecol,'unixepoch'); 
  • SQLite ExecSql no funciona desde el archivo
  • ¿Está correcta la documentación de Android Cursor.moveToNext ()?
  • ¿Cómo crear una vista sql (CREATE VIEW) en sqlite (android) y consulta?
  • Cómo obtener entradas nulas de sqlite en android
  • Dónde colocar una base de datos existente en el proyecto de estudio de android
  • Seleccione un primer carácter distinto basado en la columna de cadena
  • Sincronizar datos SQLite desde el teléfono Android a la base de datos MySQL de MySQL de Windows
  • Especificar el tamaño de sqlite db máximo para mi aplicación. Cómo manejar db completa excepción
  • Android: Cierre de la base de datos SQLite
  • ¿Es Parse.com un servicio adecuado para la copia de seguridad / sincronización con SQLite en Android?
  • Android: SQLite usando base de datos incorrecta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.