Usando limit () y offset () en QueryBuilder (ANDROID, ORMLITE)
@SuppressWarnings("deprecation") public List<Picture> returnLimitedList(int offset, int end) { List<Picture> pictureList = new ArrayList<Picture>(); int startRow = offset; int maxRows = end; try { QueryBuilder<Picture, Integer> queryBuilder = dao.queryBuilder(); queryBuilder.offset(startRow).limit(maxRows); pictureList = dao.query(queryBuilder.prepare()); } catch (SQLException e) { e.printStackTrace(); } return pictureList; }
- Tengo una tabla de imágenes en la base de datos, y debo devolver una lista limitada, 20 líneas a la vez.
- Pero cuando uso ex: QueryBuilder.offset (11) .limit (30);
- No puedo devolver la lista limitada a 20 líneas.
- La lista sólo me viene con el límite.
- Es como si el offset permanezca siempre con valor 0
-
Ex: (0 – 30)
-
¿Hay alguna otra forma de devolver una lista limitada para el índice inicial y el índice final?
- La aplicación en la liberación se bloquea, mientras que en depuración no
- Jackson no puede deserializar a una ForeignCollection (Ormlite)
- Android / ORMLite Insertar fila con ID
- Borrar datos antiguos de caché con robospice ormlite
- Orm Lite - No se pudo encontrar el constructor público que tiene un solo argumento (Context) para la clase helper
- ¿Podría alguien ayudarme?
- Analizar con jackson e insertar el mismo objeto en sqlite usando ormlite android
- Consulta compleja con SQL COUNT y SUM
- Uso de Ormlite en combinación con el proveedor de contenido de Android
- Cómo crear sqlite declaración preparada en OrmLite?
- Persista HashMap en ORMLite
- Android ORMLite. LEFT unirse. Dónde cláusula
- ¿Cómo usar LoaderManager.LoaderCallbacks y CursorLoader para ORMLite?
- Ver SQL generado por ORMLite en Android
Esta pregunta se hizo hace dos meses, pero voy a responder si alguien tropezó con el mismo problema que yo.
Hay malentendido acerca de lo que significa offset
en este caso, aquí sigue lo que SQLite Documentations dice al respecto
Si una expresión tiene una cláusula OFFSET, las primeras M filas se omitirán del conjunto de resultados devueltos por la sentencia SELECT y se devolverán las N filas siguientes, donde M y N son los valores a los que las cláusulas OFFSET y LIMIT se evalúan respectivamente.
Fuente
Según su consulta, devolverá 30 líneas que empiezan en la línea # 11.
Así que la manera correcta es:
queryBuilder.offset(startRow).limit(20);
Con el limit
siendo el número de filas que devolverá, no la fila final.
pictureList = dao.query(queryBuilder.prepare());
Y la List
devuelta con el primer valor empezando en pictureList.get(0)
Editar: Ayuda de @Gray en los comentarios
- Quiero medir la altura del ListView (getHight () = 0)
- ¿Qué significan estos números en Android Logcat?