Android Cursor.registerContentObserver ()

Estoy utilizando un par de listviews, cada uno usando una subclases SimpleCursorAdapter para hacer frente a los resultados de un db. Es un simple visor de diario, actividad 1 = día, actividad 2 = semana.

Estoy intentando suprimir un artículo en el listview del día, y después tener las vistas del día y de la semana para restaurar después del cambio.

Si llamo cursor.requery () en la actividad que he eliminado, refleja el cambio. Sin embargo, la otra actividad no sabe del cambio.

Creo que quiero utilizar Cursor.registerContentObserver como la reclamación docs "Registrar un observador que se llama cuando los cambios ocurren en el contenido que respalda este cursor.Típicamente el conjunto de datos no cambiará hasta que se requiera ().

Sin embargo, ingenuamente escribí un observador de contenido:

private class dbObserver extends ContentObserver { public dbObserver(Handler handler) { super(handler); } @Override public void onChange(boolean selfChange) { lectureCursor.requery(); super.onChange(selfChange); } } 

A continuación, en el onCreate de cada actividad:

 dbObserver test = new dbObserver(new Handler()); lectureCursor.registerContentObserver(test); 

Pero onChange nunca se llama cuando elimino de la base de datos. ¿Estoy haciendo algo estúpido aquí?

Creo que la razón por la que no funciona es porque usted está tratando de llamar a consulta () desde dentro de la onChange (), pero onChange () es sólo después de que se llama a consulta ().

Es posible que desee considerar el uso de ContentResolver registerContentObserver () . De esta manera onChange () se llamará siempre que haya un cambio en el db para ese uri.

Resulta que usted necesita llamar a:

 cursor.setNotificationUri(getContentResolver(), uri); 

Para hacer que el cursor notifique a su observador sobre los cambios.

  • Sqlite no pudo leer row 0 col -1 de cursorwindow de cursor en servicio de alarma
  • Android obtiene un cursor sólo con contactos que tienen un correo electrónico listado> android 2.0
  • Consulta getContentResolver causa la advertencia CursorWrapperInner
  • Vincular los datos del cursor a un diseño no listado
  • Notificar cambios de datos en un cursor sin utilizar un ContentProvider
  • ¿Cómo se implementa el cursor de la base de datos de Android en los detalles?
  • StaleDataException: acceso al cursor cerrado
  • Android ¿cómo codificar ahora si requery está obsoleto?
  • Agregar el contenido de un Cursor a otro Cursor
  • Escribir dentro de un cursor Android
  • ¿Cuándo cerrar el cursor en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.