2015-02-10 3 views
6

Я хочу отобразить все фотографии с моего телефона и отобразить их в gridview с помощью Picasso. Проблема в том, что я не знаю, как это реализовать.Picasso загрузка миниатюр всех фотографий телефона

Currentyly им, используя это, чтобы запросить все телефонные фотографии:

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); 

И MediaStore.Images.Thumbnails.getThumbnail получить растровое изображение эскиза, чтобы впрыснуть в ImageView.

Как я мог реализовать его с помощью Picasso?

ответ

4

Довольно простой. Просто используйте Uri.withAppendedPath для создания URI, а затем подайте его в Picasso. Последний будет использовать свой MediaStoreRequestHandler для получения правильного изображения.

// 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

Это не приведет к правильному миниатюре, поскольку вы предоставляете 'columnIndex' как идентификатор отображаемого изображения. Используя проекцию по умолчанию, индекс столбца равен 0, поэтому вы просто получите первую миниатюру в хранилище мультимедиа. –