Y a-t-il un moyen de limiter le résultat extrait de MediaStore à l'aide de la fonction ManageedQuery sur Android. Depuis que j'ai actuellement une grille qui affichant toutes les photos trouvées sur la carte SD, mais il est trop intensif de la récupérer afin que je décide de limiter le résultat extrait du magasin multimédia mais que vous ne trouvez pas une fonction limite pouvant réduire l'ensemble de données résultant. . P>
aide s'il vous plaît p>
3 Réponses :
Vous pouvez limiter le résultat à l'aide du paramètre de certificat dans Query méthode. Quelque chose comme ça Ceci commandera le résultat défini par ID et limiter le résultat. P> P>
Utiliser la commande dans la méthode de la requête du contentResolver pour implémenter votre fonction, Tels que "Nom de ColumnName ASC Numéro de limite"
Dans mon cas: P>
cursor = resolver.query(STORAGE_URI, projection, Media.BUCKET_DISPLAY_NAME + "=?", new String[] { folderName }, " _id asc limit " + num);
Et vous avez besoin de la partie "
Assurez-vous de ne pas utiliser la mise en forme de chaîne pour créer le paramètre car elle effectue la localisation par défaut, c'est-à-dire que l'instruction suivante causera une exception SQL sur les téléphones arabes: SortorOrdon = string.format ("_ID ASC Limit (% d)", num); code>
@Tomsusel plutôt ne s'appuyer pas sur les paramètres régionaux par défaut :)
Lorsque vous ciblez Android 11, la réponse suggérée provoquera une exception, avec à la place, vous devez fournir un paramètre de requête "limite" sur l'URI que le MediaProvider lira. P> java.lang.illegalargumentException: limite de jeton non valide code>
val queryUri = IMAGE_URI.buildUpon().appendQueryParameter("limit", limit.toString()).build()
Cela n'a pas fonctionné pour moi, ce paramètre de requête a été ignoré.