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") ); 
  • Android.net.uri getQueryParameterNames () alternativa
  • Uri regresó después de ACTION_GET_CONTENT de la galería no está trabajando en setImageURI () de ImageView
  • Android: Guardar el objeto android.net.Uri en la base de datos
  • Problemas de Uri
  • Imagen de Uri a bytesarray
  • ¿Cómo puedo obtener el tipo mime de un archivo con su Uri?
  • Cómo utilizar ExifInterface con una secuencia o un URI
  • ¿Hay lejos para conseguir uri del mapa de bits con hacia fuera excepto él a sdcard?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.