2016-05-13 14 views
1

Ich habe diese Funktion, die die Galerie BilderWie aus Images mehrere Uri kombinieren

public void getImagesFromGallary(Context context) { 

     List<Uri> imagesUri = new ArrayList<>(); 
    List<Uri> imageOrientationUri = new ArrayList<>(); 


     Cursor imageCursor = null; 
     try { 
      final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.ORIENTATION}; 
      final String orderBy = MediaStore.Images.Media.DATE_ADDED + " DESC"; 


      imageCursor = context.getApplicationContext().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy); 
      while (imageCursor.moveToNext()) { 
       Uri uri = Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA))); 
       Uri uriOrientation = Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.ORIENTATION))); 
       imagesUri.add(uri); 
       imageOrientationUri.add(uriOrientation); 

      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (imageCursor != null && !imageCursor.isClosed()) { 
       imageCursor.close(); 
      } 
     } 
    } 

Muss ich zwei Uri Liste zum Beispiel haben müssen für diese abfragt, ich habe eine

imagesUri Liste und ein imageOrientationUri Liste.

Was ist, wenn ich mehr Informationen von dem Bild haben möchte, muss ich einen anderen Uri vom Cursor analysieren?

Antwort

1

Sie können ein Objekt für das Bild, wie erstellen:

public class ImageDetails { 

    private URI imageURI; 
    private URI imageOrientationURI; 

    public URI getImageURI() { 
     return imageURI; 
    } 

    public void setImageURI(URI imageURI) { 
     this.imageURI = imageURI; 
    } 

    public URI getImageOrientationURI() { 
     return imageOrientationURI; 
    } 

    public void setImageOrientationURI(URI imageOrientationURI) { 
     this.imageOrientationURI = imageOrientationURI; 
    } 
} 

und erstellen Sie eine einzige Liste, und fügen Sie Details, um es mag:

public void getImagesFromGallary(Context context) { 

    List<ImageDetails> imageDetails = new ArrayList<>(); 

    Cursor imageCursor = null; 
    try { 
     final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.ORIENTATION}; 
     final String orderBy = MediaStore.Images.Media.DATE_ADDED + " DESC"; 

     imageCursor = context.getApplicationContext().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null, null, orderBy); 
     while (imageCursor.moveToNext()) { 
      ImageDetails tmp = new ImageDetails(); 
      tmp.setImageURI(Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.ORIENTATION)))); 
      tmp.setImageOrientationURI(Uri.parse(imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA)))); 

      imageDetails.add(tmp); 

     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } finally { 
     if (imageCursor != null && !imageCursor.isClosed()) { 
      imageCursor.close(); 
     } 
} 

So für jede neue Eigenschaft jetzt können Sie Erstellen Sie eine neue Variable in der Klasse zusammen mit den Gettern und Setter