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'); 
  • No se puede degradar la base de datos de la versión 2 a 1 incluso después de una nueva instalación y volver a ejecutar
  • Cómo comparar representaciones de cadena de dobles si termina en .00
  • Android + Robolectric - RuntimeException / InstantiationException en queryBuilder.query () en ContentProvider
  • Android NDK construir de spatialite?
  • Seleccione al menos uno de cada categoría?
  • ¿Cómo usar SQLiteOpenHelper con la base de datos en sd-card?
  • Compruebe si la consulta SQL ha tenido éxito en Android SQLite
  • Preguntas SQL parametrizadas en Android
  • ¿Cómo establecer el tipo de datos en SQLiteDatabase vinculación de consulta en bruto?
  • cláusula multiple where en android
  • Cómo reemplazar CursorAdapter bindView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.