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.
- Cursor de Android en idiomas RTL
- ¿Qué significa "declaración inválida en fillWindow ()" en el cursor de Android?
- Optimización del acceso a cursores en Android: Posición vs nombres de columna
- Obtener palabra de EditText en la posición actual del cursor
- Android CursorLoader
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í?
- Uso del cursor en android
- Obtener cuenta con cursor.getCount () o para ejecutar un rawQuery con un COUNT en una cláusula SQL?
- El cursor de Android 4.0 EditText siempre es invisible para editable = false
- Finalizando un Cursor que no ha sido desactivado o cerrado error no fatal
- SQLite CursorWindowAllocationException crash
- ¿Cómo obtener la cadena del elemento seleccionado de SimpleCursorAdapter?
- SimpleCursorAdapter, Cambiando el cursor en el nivel de API por debajo de 11
- ¿Hay una buena razón para que un encabezado ListView ocupe una posición?
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.
- Vista web de Android en la mitad de la pantalla
- Cómo detener un servicio en Android cuando la aplicación no se está ejecutando.