¿Hay alguna forma de cómo obtener Cursor para una consulta que estoy procesando con el objeto ORMLite Dao?Android Cursor con ORMLite para usar en CursorAdapter
Respuesta
ORMLite ahora soporta next()
, previous()
, moveRelative(offset)
..., métodos en el CloseableIterator
class. Esto debería permitirle mover el objeto subyacente Cursor
a voluntad.
También es compatible con los siguientes métodos DAO cursor:
dao.mapSelectStarRow(databaseResults)
Volver la última fila de la base de datos los resultados de una consulta aselect *
. Con esto puede cambiar la ubicación del cursor (por ejemplo) y luego obtener el objeto actual.dao.getSelectStarRowMapper()
Proporciona un correlacionador que puede usar para asignar el objeto fuera del Dao.
Cuando usted está construyendo su propia consulta con ORMLite, se utiliza el objeto QueryBuilder
. queryBuilder.prepare()
devuelve un PreparedQuery
que es usado por varios métodos en el DAO. Puede llamar al dao.iterator(preparedQuery)
, que devolverá un CloseableIterator
que se utiliza para recorrer los resultados. Hay un iterator.getRawResults()
para obtener acceso a la clase DatabaseResults
. En Android, esto se puede convertir a AndroidDatabaseResults
que tiene un método getCursor()
para devolver el Android Cursor
.
Algo así como el código siguiente:
// build your query
QueryBuilder<Foo, String> qb = fooDao.queryBuilder();
qb.where()...;
// when you are done, prepare your query and build an iterator
CloseableIterator<Foo> iterator = dao.iterator(qb.prepare());
try {
// get the raw results which can be cast under Android
AndroidDatabaseResults results =
(AndroidDatabaseResults)iterator.getRawResults();
Cursor cursor = results.getRawCursor();
...
} finally {
iterator.closeQuietly();
}
Esto es un poco complicado, pero que son sin duda tener que mirar detrás del valle para llegar a este objeto que está oculto por las clases de abstracción de base de datos.
Si se refiere al método getHelper()
para llegar a los métodos de dao crear etc., solo tiene que heredar del OrmLiteBaseActivity<YourDBHelper>
y puede llamarlo. Se verá algo como esto:
public class YourClass extends OrmLiteBaseActivity<YourDBHelper> {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
getHelper().getDao().queryForAll();
...
}
}
Si quiere decir el cursor para manejar la operación de base de datos: No creo que se puede llegar a ella! Pero no entiendo por qué deberías necesitarlo. ORMLite tiene casi todas las funciones del cursor. Entonces, ¿para qué lo necesitas?
Sé de esto, pero necesito que Cursor lo use en CursorAdapter. – sealskej
¿Has probado algunos de los consejos de Gray de this post? Explica cómo puede seleccionar una columna como otro nombre, como, por ejemplo, seleccionar id como _id.
Como puede nombrar sus columnas en ormlite, supongo que por qué no solo las nombra _id, en lugar de seleccionarlas como :)? – AgentKnopf
Claro, puede, pero en una instancia en la que cambiarle el nombre no es una opción, simplemente usa la sintaxis sql de "como";) –
cierto eso, tiene un punto :) – AgentKnopf
Si estás en una actividad y no quieres perder el tiempo con el QueryBuilder da el siguiente intento, que es igual de efectivo.
Cursor cursor = getHelper().getReadableDatabase().query(tableName, projection, selection, selectionArgs, groupBy, having, sortOrder)
- 1. Android: cómo usar CursorAdapter?
- 2. ORMLite con CursorAdapter en Android
- 3. ¿Qué CursorAdapter tengo que usar?
- 4. Problema de pérdida de Android SQlite con CursorAdapter
- 5. Android texto completo autocompletado y Cursoradapter
- 6. Android 4.0.3 CursorAdapter no llena ListView en changeCursor
- 7. CursorAdapter vs ArrayAdapter para un ListView
- 8. SimpleCursorAdapter vs CursorAdapter?
- 9. Cómo reemplazar CursorAdapter bindView
- 10. ¿Este CursorAdapter personalizado para un ListView está codificado correctamente para Android?
- 11. GetView vs. ¿BindView en un CursorAdapter personalizado?
- 12. Cursor nulo en Android
- 13. Android: ¿el patrón ViewHolder se implementa automáticamente en CursorAdapter?
- 14. Solución alternativa para necesitar una fila _id para CursorAdapter
- 15. Android Edittext cursor invisible
- 16. CursorAdapter vs ResourceCursorAdapter
- 17. SimpleCursorAdapter y CursorAdapter
- 18. Cursor Android tamaño máximo
- 19. Android ListView update con SimpleCursorAdapter
- 20. Android ContentProvider llama ráfagas de setNotificationUri() a CursorAdapter cuando se insertan muchas filas con una operación por lotes
- 21. cursor de texto de Android en EditText
- 22. Obteniendo cadenas de un cursor en Android?
- 23. Iteración sin usar el cursor en MYSQL
- 24. Cuándo cerrar el cursor en Android?
- 25. ¿Puede alguien explicar Cursor en Android?
- 26. android, cursor devolviendo valor booleano?
- 27. Cómo eliminar un elemento seleccionado de ListView usando CursorAdapter
- 28. Android 4.0 EditText cursor siempre es invisible para editable = falso
- 29. ¿Cómo usar onPause con Android?
- 30. ¿Puedo usar AlarmManager con LocalBroadcastManager en android?
¿cómo puedo obtener la conexión de base de datos? – max4ever
He cambiado esta respuesta para mostrar cómo se puede hacer sin necesidad de conexión a la base de datos. – Gray
@Gray ¿Cuál es la mejor manera de inflar las vistas de list_item con el cursor? Además, ¿es un 'CursorAdapter' lo mejor para usar con' OrmLiteBaseListActivity'? – theblang