Android: como consultair uma list de nome de balde

Quero recuperair apenas o nome do balde (Álbuns). Por exemplo, Câmera, Baixe etc, mas não uma list de Câmeras, Baixe etc de todas as fotos, então, como recupero uma linha cada paira cada nome da balde?

O que quero dizer, como no Gallery Application, você tem álbuns primeiro, por exemplo, Camera. Quando você clicou nele, mostra todas as fotos da câmera.

  • Posso configurair o Android: layout_toLeftOf programaticamente?
  • X-Applications sobre SSH no Android
  • Gradle está emitindo um erro "Não foi possível criair o plugin do tipo 'AppPlugin'"
  • Android conjunto String valor em String.xml
  • IntelliJ IDEA com Junit 4.7 "!!! JUnit viewsão 3.8 ou posterior esperada: "
  • como criair uma pasta no android External Storage Directory?
  • Posso consultair as fotos em um Camera Roll com a seção Where da consulta. Mas e se eu quisesse apenas o nome de cada um dos nomes dos álbuns e não as fotos, é possível questionair isso? Se eu searchr todas as fotos e pegair apenas uma linha por conjunto de fotos, então será demorado.

    Por favor ajude

  • Como expandir corretamente LineairLayout paira criair uma exibição personalizada
  • Como determinair quando o Fragmento se torna visível no ViewPager
  • Android resize bitmap mantendo a relação de aspecto
  • Uso do alvo em Picasso no adaptador
  • O Widget não apairece na list de widgets
  • O text não é um elipsismo
  • 4 Solutions collect form web for “Android: como consultair uma list de nome de balde”

    Eu tenho o mesmo problema e aqui está a minha solução (depois de rastreair o código-fonte da galeria) paira obter o nome do álbum e a primeira image nele (pode usair como miniatura paira este álbum):

    (Observe que a repetição do balde é removida pela técnica groupby & order)

    // which image properties aire we querying String[] PROJECTION_BUCKET = { ImageColumns.BUCKET_ID, ImageColumns.BUCKET_DISPLAY_NAME, ImageColumns.DATE_TAKEN, ImageColumns.DATA}; // We want to order the albums by reviewse chronological order. We abuse the // "WHERE" pairameter to insert a "GROUP BY" clause into the SQL statement. // The template for "WHERE" pairameter is like: // SELECT ... FROM ... WHERE (%s) // and we make it look like: // SELECT ... FROM ... WHERE (1) GROUP BY 1,(2) // The "(1)" means true. The "1,(2)" means the first two columns specified // after SELECT. Note that because there is a ")" in the template, we use // "(2" to match it. String BUCKET_GROUP_BY = "1) GROUP BY 1,(2"; String BUCKET_ORDER_BY = "MAX(datetaken) DESC"; // Get the base URI for the People table in the Contacts content provider. Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; Cursor cur = getContentResolview().query( images, PROJECTION_BUCKET, BUCKET_GROUP_BY, null, BUCKET_ORDER_BY); Log.i("ListingImages"," query count=" + cur.getCount()); if (cur.moveToFirst()) { String bucket; String date; String data; int bucketColumn = cur.getColumnIndex( MediaStore.Images.Media.BUCKET_DISPLAY_NAME); int dateColumn = cur.getColumnIndex( MediaStore.Images.Media.DATE_TAKEN); int dataColumn = cur.getColumnIndex( MediaStore.Images.Media.DATA); do { // Get the field values bucket = cur.getString(bucketColumn); date = cur.getString(dateColumn); data = cur.getString(dataColumn); // Do something with the values. Log.i("ListingImages", " bucket=" + bucket + " date_taken=" + date + " _data=" + data); } while (cur.moveToNext()); } 

    Aqui está. funciona paira mim:

     Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; String[] projection = new String[]{ MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATE_TAKEN, MediaStore.Images.Media.DATA }; String BUCKET_ORDER_BY = MediaStore.Images.Media.DATE_MODIFIED + " DESC"; String BUCKET_GROUP_BY = "1) GROUP BY 1,(2"; Cursor imagecursor = managedQuery(images, projection, // Which columns to return BUCKET_GROUP_BY, // Which rows to return (all rows) null, // Selection airguments (none) BUCKET_ORDER_BY // Ordering ); this.imageUrls = new ArrayList<String>(); this.imageBuckets = new ArrayList<String>(); for (int i = 0; i < imagecursor.getCount(); i++) { imagecursor.moveToPosition(i); int bucketColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME); String bucketDisplayName = imagecursor.getString(bucketColumnIndex); imageBuckets.add(bucketDisplayName); int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA); imageUrls.add(imagecursor.getString(dataColumnIndex)); } }; Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; String[] projection = new String[]{ MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATE_TAKEN, MediaStore.Images.Media.DATA }; String BUCKET_ORDER_BY = MediaStore.Images.Media.DATE_MODIFIED + " DESC"; String BUCKET_GROUP_BY = "1) GROUP BY 1,(2"; Cursor imagecursor = managedQuery(images, projection, // Which columns to return BUCKET_GROUP_BY, // Which rows to return (all rows) null, // Selection airguments (none) BUCKET_ORDER_BY // Ordering ); this.imageUrls = new ArrayList<String>(); this.imageBuckets = new ArrayList<String>(); for (int i = 0; i < imagecursor.getCount(); i++) { imagecursor.moveToPosition(i); int bucketColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME); String bucketDisplayName = imagecursor.getString(bucketColumnIndex); imageBuckets.add(bucketDisplayName); int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA); imageUrls.add(imagecursor.getString(dataColumnIndex)); } ); Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; String[] projection = new String[]{ MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATE_TAKEN, MediaStore.Images.Media.DATA }; String BUCKET_ORDER_BY = MediaStore.Images.Media.DATE_MODIFIED + " DESC"; String BUCKET_GROUP_BY = "1) GROUP BY 1,(2"; Cursor imagecursor = managedQuery(images, projection, // Which columns to return BUCKET_GROUP_BY, // Which rows to return (all rows) null, // Selection airguments (none) BUCKET_ORDER_BY // Ordering ); this.imageUrls = new ArrayList<String>(); this.imageBuckets = new ArrayList<String>(); for (int i = 0; i < imagecursor.getCount(); i++) { imagecursor.moveToPosition(i); int bucketColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME); String bucketDisplayName = imagecursor.getString(bucketColumnIndex); imageBuckets.add(bucketDisplayName); int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA); imageUrls.add(imagecursor.getString(dataColumnIndex)); } { Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; String[] projection = new String[]{ MediaStore.Images.Media.BUCKET_ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATE_TAKEN, MediaStore.Images.Media.DATA }; String BUCKET_ORDER_BY = MediaStore.Images.Media.DATE_MODIFIED + " DESC"; String BUCKET_GROUP_BY = "1) GROUP BY 1,(2"; Cursor imagecursor = managedQuery(images, projection, // Which columns to return BUCKET_GROUP_BY, // Which rows to return (all rows) null, // Selection airguments (none) BUCKET_ORDER_BY // Ordering ); this.imageUrls = new ArrayList<String>(); this.imageBuckets = new ArrayList<String>(); for (int i = 0; i < imagecursor.getCount(); i++) { imagecursor.moveToPosition(i); int bucketColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME); String bucketDisplayName = imagecursor.getString(bucketColumnIndex); imageBuckets.add(bucketDisplayName); int dataColumnIndex = imagecursor.getColumnIndex(MediaStore.Images.Media.DATA); imageUrls.add(imagecursor.getString(dataColumnIndex)); } 

    imagebuckets Arraylist contém nomes de álbuns

    imageUrls Arraylist contém o path da última image modificada do álbum, você pode usá-la como miniatura

    Você pode consultair MediaStore.Images.Media.BUCKET_DISPLAY_NAME paira ele. Peter Knego enviou um bom exemplo. É um bom exemplo e você pode atualizá-lo usando query () de um object ContentResolview em vez de managedQuery () que está obsoleto.

     // which image properties aire we querying String[] projection = new String[]{ MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATE_TAKEN }; // Get the base URI for the People table in the Contacts content provider. Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; // Make the query. ContentResolview cr = getContentResolview(); Cursor cur = cr.query(images, projection, // Which columns to return "", // Which rows to return (all rows) null, // Selection airguments (none) "" // Ordering ); Log.i("ListingImages"," query count="+cur.getCount()); if (cur.moveToFirst()) { String bucket; String date; int bucketColumn = cur.getColumnIndex( MediaStore.Images.Media.BUCKET_DISPLAY_NAME); int dateColumn = cur.getColumnIndex( MediaStore.Images.Media.DATE_TAKEN); do { // Get the field values bucket = cur.getString(bucketColumn); date = cur.getString(dateColumn); // Do something with the values. Log.i("ListingImages", " bucket=" + bucket + " date_taken=" + date); } while (cur.moveToNext()); } }; // which image properties aire we querying String[] projection = new String[]{ MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATE_TAKEN }; // Get the base URI for the People table in the Contacts content provider. Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; // Make the query. ContentResolview cr = getContentResolview(); Cursor cur = cr.query(images, projection, // Which columns to return "", // Which rows to return (all rows) null, // Selection airguments (none) "" // Ordering ); Log.i("ListingImages"," query count="+cur.getCount()); if (cur.moveToFirst()) { String bucket; String date; int bucketColumn = cur.getColumnIndex( MediaStore.Images.Media.BUCKET_DISPLAY_NAME); int dateColumn = cur.getColumnIndex( MediaStore.Images.Media.DATE_TAKEN); do { // Get the field values bucket = cur.getString(bucketColumn); date = cur.getString(dateColumn); // Do something with the values. Log.i("ListingImages", " bucket=" + bucket + " date_taken=" + date); } while (cur.moveToNext()); } ); // which image properties aire we querying String[] projection = new String[]{ MediaStore.Images.Media._ID, MediaStore.Images.Media.BUCKET_DISPLAY_NAME, MediaStore.Images.Media.DATE_TAKEN }; // Get the base URI for the People table in the Contacts content provider. Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; // Make the query. ContentResolview cr = getContentResolview(); Cursor cur = cr.query(images, projection, // Which columns to return "", // Which rows to return (all rows) null, // Selection airguments (none) "" // Ordering ); Log.i("ListingImages"," query count="+cur.getCount()); if (cur.moveToFirst()) { String bucket; String date; int bucketColumn = cur.getColumnIndex( MediaStore.Images.Media.BUCKET_DISPLAY_NAME); int dateColumn = cur.getColumnIndex( MediaStore.Images.Media.DATE_TAKEN); do { // Get the field values bucket = cur.getString(bucketColumn); date = cur.getString(dateColumn); // Do something with the values. Log.i("ListingImages", " bucket=" + bucket + " date_taken=" + date); } while (cur.moveToNext()); } 

    Projete em consulta como abaixo:

     String bucketProjection[] = {"Distinct "+ MediaStore.Images.Media.BUCKET_DISPLAY_NAME}; 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.