2017-02-22 73 views
0

Я выбрал несколько фотографий из галереи и покажу в GridView. Все в порядке, он занимает 3 позиции, когда я выбираю 3 фотографии, но фотография не отображается в GridView. Я думаю, что проблема преобразования типа данных.Фото не отображается в GridView

Вот Pick Фото из галереи деятельности

if (requestCode == Constants.REQUEST_CODE && resultCode == RESULT_OK && data != null) { 
    List<Image> images = data.getParcelableArrayListExtra(Constants.INTENT_EXTRA_IMAGES); 
    // StringBuffer stringBuffer = new StringBuffer(); 
    /*for (Photo photo: mPhotos) { 
     System.out.println(photo.getPhoto()); 
    }*/ 
    for (int i = 0, l = images.size(); i < l; i++) { 
     Photo photos = new Photo(); 
     photos.setPhoto(String.valueOf(i)); 
     mPhotos.add(photos); 
     stringBuffer.append(images.get(i).path + "\n"); 
    } 
    Log.i("SS", stringBuffer.toString()); 
    // textView.setText(stringBuffer.toString()); 
} 

Вот адаптер

public class SelectPhotoAdapter extends BaseAdapter { 
    List<Photo> mPhotos = new ArrayList<Photo>(); 
    LayoutInflater mInflater; 

    public SelectPhotoAdapter(Context context, List<Photo> mPhotos) { 
     mInflater = LayoutInflater.from(context); 
     this.mPhotos = mPhotos; 
    } 

    @Override 
    public int getCount() { 
     return mPhotos.size(); 
    } 

    @Override 
    public Photo getItem(int position) { 
     return mPhotos.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return Integer.valueOf(mPhotos.get(position).photo); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     ImageView picture; 

     if (v == null) { 
      v = mInflater.inflate(R.layout.gridview_item, parent, false); 
      v.setTag(R.id.picture, v.findViewById(R.id.picture)); 
     } 

     picture = (ImageView) v.getTag(R.id.picture); 
     Photo photo = getItem(position); 
     picture.setImageResource(Integer.parseInt(photo.getPhoto())); 
     return v; 
    } 
} 

Вот XML

<com.example.android.SquareImageView 
android:id="@+id/picture" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:scaleType="centerCrop"/> 
+0

вывесить XML: '' gridview_item' – rafsanahmad007

+0

photo.getPhoto()) 'это дает действительный идентификатор ресурса? – rafsanahmad007

+0

Да, не могу setImageResource (photo.getPhoto()) – WPG

ответ

0

попробовать этот

Bitmap bmp = BitmapFactory.decodeFile(photo.getPhoto()); 

    // Set the decoded bitmap into ImageView 
    picture.setImageBitmap(bmp); 
+0

Он не показывает, bro – WPG

+0

у вас есть объявленное разрешение в манифесте?

+0

Да, я объявил разрешение. Я думаю, что это неправильно ... ** photos.setPhoto() ** Это путь. ** stringBuffer.toString() ** – WPG

0

Вам нужно добавить permisssion в манифесте: читать изображения с помощью PATH

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

Для Апи> = 23 требуется разрешение выполнения:

написать в OnCreate() деятельности:

ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 

поймать результат разрешения:

public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case 1: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

      } else { 
       // permission denied, boo! Disable the 
       // functionality that depends on this permission. 
       finish(); 
      } 
      return; 
     } 
     // other 'case' lines to check for other 
     // permissions this app might request 
    } 
} 

Теперь у ча п установить изображение с помощью:

Bitmap bmp= BitmapFactory.decodeFile(photo.getPhoto()); 
ImageView picture = (ImageView)v.findViewById(R.id.picture); 
picture.setImageBitmap(bmp); 
+0

Да, я объявил разрешение. Я думаю, что это неправильно ... ** photos.setPhoto() ** Это путь. ** stringBuffer.toString() ** – WPG

+0

'/ storage/emulated/0/DCIM/Camera/1487742093532.jpg' похоже, является допустимым путем, вы говорите, что ваш 'photo.setPhoto()' не так? – rafsanahmad007

+0

Да, когда я устанавливаю ** photo.setPhoto (stringBuffer.toString()) ** Это путь, я думаю, что нужно изменить на String из пути. – WPG