2015-02-10 11 views
6

Desidero visualizzare tutte le foto dal mio telefono e visualizzarle in griglia con Picasso. Il problema è che non so come implementarlo.Picasso che carica le miniature di tutte le foto telefoniche

im Currentyly che utilizzano questo per interrogare tutte le foto del telefono:

Cursor cursor; 
    String[] columns = new String[] { 
      MediaStore.Images.ImageColumns._ID, 
      MediaStore.Images.ImageColumns.TITLE, 
      MediaStore.Images.ImageColumns.DATA}; 
    cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
      columns, null, null, null); 
    int columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID); 
    int columnPath = cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA); 

E MediaStore.Images.Thumbnails.getThumbnail per ottenere bitmap della miniatura per iniettare a ImageView.

Come posso implementarlo utilizzando Picasso?

risposta

4

Abbastanza semplice. Basta usare lo Uri.withAppendedPath per costruire l'URI e quindi inviarlo a Picasso. Quest'ultimo utilizzerà internamente il suo MediaStoreRequestHandler per recuperare l'immagine giusta.

// Use the cursor you've defined (correctly) 
int columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID); 
Uri imageURI = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(columnIndex)); 
Picasso 
    .with(context) 
    .load(imageURI) 
    .fit() 
    .centerInside() 
    .into(imageView); 
+2

Questo non otterrà la miniatura corretta, dato che stai fornendo 'columnIndex' come ID dell'immagine da visualizzare. Usando la proiezione predefinita, l'indice della colonna è 0, quindi otterrete semplicemente la prima miniatura nel media store. –

Problemi correlati