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; } 

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

  • ¿Por qué las precondiciones de Gson fallan en esta instancia?
  • Método de cadena de escape Ormlite?
  • Prueba de la clase de comunicación con DB a través de DAO de ORMLite
  • ORMLite - CallBatchTasks () individualmente o una vez para todas las actualizaciones?
  • Actualizaciones de miembros extranjeros de ORMLite
  • Crash ORMLite en Android con proguard
  • ORMLite id genera
  • ORMLite Seleccionar campos distintos
  • Agregar, quitar objetos de una colección extranjera
  • Android - Uso de DAO de ORMLite como ContentProvider
  • Ormlite, listViews y adaptadores?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.