Cómo agregar una cláusula de límite utilizando el proveedor de contenido

¿Hay alguna manera de limitar el número de filas devueltas por el proveedor de contenido? Encontré esta solución , sin embargo, no funcionó para mí. Todas las filas se siguen devolviendo.

Uri uri = Playlists.createIdUri(playlistId); //generates URI uri = uri.buildUpon().appendQueryParameter("limit", "3").build(); Cursor cursor = activity.managedQuery(playlistUri, null, null, null, null); 

3 Solutions collect form web for “Cómo agregar una cláusula de límite utilizando el proveedor de contenido”

He tenido este problema y tuvo que romper mi cabeza hasta que finalmente lo averiguó, o mejor dicho un whay que funcionó para mí. Pruebe lo siguiente

 Cursor cursor = activity.managedQuery(playlistUri, null, null, null, " ASC "+" LIMIT 2"); 

El último parámetro es sortOrder. Proveí el orden de clasificación y también añadí el LÍMITE a él. Asegúrese de dar los espacios correctamente. Tuve que comprobar la consulta que se estaba formando y esto parecía funcionar.

Un proveedor de contenido debe, en principio, prestar atención a un parámetro de límite. Desafortunadamente, no es universalmente implementado.

Por ejemplo, al escribir un proveedor de contenido para manejar las consultas de SearchManager:

 String limit = uri.getQueryParameter(SearchManager.SUGGEST_PARAMETER_LIMIT); 

Donde no se implementa sólo se puede caer en la opción fea de pegar un límite en la cláusula de clasificación.

Lamentablemente, ContentResolver no puede consultar el argumento de límite. Dentro de su ContentProvider, su MySQLQueryBuilder puede consultar agregando el parámetro de límite adicional.

Siguiendo la agenda, podemos agregar una regla URI adicional dentro de ContentProvider.

 static final int ELEMENTS_LIMIT = 5; public static final UriMatcher uriMatcher; static { uriMatcher = new UriMatcher( UriMatcher.NO_MATCH ); ........ uriMatcher.addURI(AUTHORITY, "elements/limit/#", ELEMENTS_LIMIT); } 

Luego, en el método de consulta

 String limit = null; //default.... switch( uriMatcher.match(uri)){ ....... case ELEMENTS_LIMIT: limit = uri.getPathSegments().get(2); break; ...... } return mySQLBuilder.query( db, projection, selection, selectionArgs, null, null, sortOrder, limit ); 

Consultar ContentProvider de la actividad.

  uri = Uri.parse("content://" + ContentProvider.AUTHORITY + "/elements/limit/" + 1 ); //In My case I want to sort and get the greatest value in an X column. So having the column sorted and limiting to 1 works. Cursor query = resolver.query(uri, new String[]{YOUR_COLUMNS}, null, null, (X_COLUMN + " desc") ); 
  • Obtener orientación de la imagen de MediaStore.Images.Media.DATA
  • Pantalla de chat de Skype desde la intención
  • Android: Obtener miniatura de la imagen en la tarjeta SD, dado Uri de la imagen original
  • Android Uri to Filesize
  • ¿Cómo obtener fileName de uri?
  • Cómo recuperar ImageUri de un ImageView?
  • Android: howto parse URL String con espacios al objeto URI?
  • Filtro de intenciones usando path, pathPrefix o pathPattern
  • ¿El método getoutputmediafileuri no es accesible?
  • Visualización de imágenes de una carpeta específica de la tarjeta SD mediante una vista de cuadrícula
  • Android: obtener un recurso de imagen en Uri: IllegalArgumentException
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.