Tengo un ListView en una ListActivity vinculada a algunos datos. Tengo un proveedor de contenido que proporciona los datos.Android ListView Live Updating
El ListActivity obtiene los datos mediante la consulta de un dispositivo de resolución contenido:
Uri uri = Uri.parse("content://my.provider.DocumentProvider/mystuff");
contentCursor = this.getContentResolver().query(uri, null, null, null, null);
Así que ahora tiene la actividad del cursor. Crea un adaptador y lo conecta a la lista:
ListAdapter adapter = new DocumentListCursorAdapter(this, R.layout.main_row_layout, contentCursor, new String[] { "titleColumn" }, new int[] { titleColumnIndex });
setListAdapter(adapter);
Esto funciona bien; la lista muestra los datos en el cursor.
Pero ahora el proveedor de contenido tiene nuevos datos. Quiero que la lista se actualice para mostrar los nuevos datos.
Los ejemplos que he visto implican una llamada al notifyDataSetChanged del adaptador, pero me parece que esto rompe la separación entre el proveedor de contenido y la lista, que está consumiendo el contenido.
¿El proveedor de contenido necesita saber qué adaptadores están conectados al cursor para que pueda llamar a su método notifyDataSetChanged? ¿O hay una mejor manera de no ver estas dos cosas acopladas de esta manera?
¿Ha visto http://developer.android.com/reference/android/content/ContentResolver.html#notifyChange%28android.net.Uri,%20android.database.ContentObserver,%20boolean%29? – Luksprog
Intenté registrarme con registerContentObserver, pero no vi un cambio cuando cambió el cursor. ¿Debería eso funcionar? – stevex
igual que slukian, además puede necesitar 'contentCursor.setNotificationUri (cr, uri);' – njzk2