Estoy intentando actualizar mi aplicación anterior en la que algunos métodos están en desuso. Descubrí que si quiero trabajar con ListView que muestra datos de db, debería usar LoaderManager + CursorLoader. CursorLoader funciona con proveedores de contenido. Entonces, ¿para cada tabla en mi base de datos debo crear proveedor de contenido ahora? Por qué debería ? Por lo que sé, los proveedores de contenido se utilizan para compartir cierta información de BD con otras aplicaciones, pero mi aplicación no comparte ninguna información. Entonces, ¿puedo usar CursorLoader sin proveedores de contenido?Android: CursorLoader, LoaderManager, SQLite
Respuesta
He escrito un blog post sobre este tema. También puede consultar este answer para obtener más información. Espero que te aclare las cosas.
Como mencionó Barak, uno puede implementar un CursorLoader
sin proveedores de contenido extendiendo la clase AsyncTaskLoader<Cursor>
. Dicho esto, la mayoría de los tutoriales y el código de ejemplo usan ContentProvider
s, y parece que el equipo de Android recomienda su uso también. También es mucho menos complicado que implementar tu propia clase.
Dicho esto, si realmente no desea utilizar los proveedores de contenidos, Dianne Hackborn (uno de los desarrolladores de Android marco, y también conocido como "hackbod" aquí en la SO) sugiere escribir su propio cargador que utiliza su clase de base de datos en lugar de un proveedor de contenido. La forma más fácil es simplemente tomar la fuente de la clase CursorLoader
de la biblioteca de compatibilidad, y reemplazar las consultas del proveedor con consultas a su propia clase de ayuda db.
Creo que vale la pena mencionar que el uso de 'ContentProvider's solo se recomienda si planea proporcionar datos a otras aplicaciones. Si no lo hace (es decir, los datos son privados para su aplicación), se le recomienda utilizar bases de datos simples de SQLite. Para obtener más información, consulte los documentos de [ContentProvider] (https://developer.android.com/reference/android/content/ContentProvider.html). – Felix
Creo que "tomar la fuente de la clase CursorLoader de la biblioteca de compatibilidad, y ..." es la mejor opción, ¿no? – BornToCode
Tuve que extender 'CursorLoader' con mi propia clase para manejar' OrmLite'. – theblang
Sí puede, puede tener cargadores de datos personalizados que pueden cargar objetos que defina o cualquier tipo de objeto o lista en ese asunto.
Basta con mirar las muestras del sdk de Android para LoaderCustomSupport.java en las muestras de la biblioteca de compatibilidad y demostraciones.
- 1. Android CursorLoader
- 2. Android CursorLoader vs AsyncQueryHandler?
- 3. Limite la consulta en CursorLoader
- 4. Android 3.0: ¿cuáles son las ventajas de utilizar las instancias de LoaderManager exactamente?
- 5. GROUP BY con CursorLoader
- 6. Android: CursorLoader se bloquea en el Fragmento no superior
- 7. IllegalStateException - Soporte LoaderManager con AutocompleteTextView
- 8. AutoCompleteTextView respaldado por CursorLoader
- 9. android sqlite sincronización bidireccional sqlite
- 10. ¿Mejores prácticas para consultar la base de datos SQLite en ListFragment con CursorLoader?
- 11. AlphabetIndexer con adaptador personalizado administrado por LoaderManager
- 12. CursorLoader para múltiples ContentProviders
- 13. Lista paginada y CursorLoader
- 14. CursorLoader with rawQuery
- 15. Android CursorLoader no responde a las notificaciones de ContentProvider
- 16. cifrado sqlite para Android
- 17. Tienda Android SQLite
- 18. salida Android cáscara sqlite
- 19. Android: SQLite - insertWithOnConflict
- 20. Android Sqlite Caracteres especiales
- 21. Android SQLite filtró
- 22. Android SQLite incremento automático
- 23. Android SQLite consulta SELECT
- 24. Disparadores SQLite en Android?
- 25. synchronize android sqlite database
- 26. Android sqlite rollback
- 27. SimpleCursorTreeAdapter y CursorLoader para ExpandableListView
- 28. Patrón para cargadores múltiples con LoaderManager?
- 29. ¿Cuál es el alcance de un LoaderManager?
- 30. ¿Debo usar Fragmentos para obtener un LoaderManager?
Eche un vistazo a la publicación de mi blog sobre el tema: [** Comprensión del 'LoaderManager' **] (http://www.androiddesignpatterns.com/2012/05/why-you-should-use-loadermanager.html) –
@Jim ¿hay algún problema con el proveedor de contenido podría ayudarme? –