Пользовательский сеточный адаптер не отображает изображения

#java #android #android-studio

Вопрос:

Я пытаюсь отобразить сетку изображений, которые пользователь может сделать с помощью приложения, которое я создаю.

Все, похоже, настроено правильно, я сохраняю соответствующие URI изображений в массиве URI и передаю их в конструктор моего пользовательского сетевого адаптера.

Оттуда, в моем классе адаптера сетки, я устанавливаю изображение imageview в макете image_grid_view в URI, который был получен из MainActivity и добавлен в мой ArrayList URI.

Мой класс адаптеров сетки:

 public class GridAdapter extends BaseAdapter {   ArrayListlt;Urigt; imagesArrList;  LayoutInflater inflater;  Context mContext;   public GridAdapter(Context _context, ArrayListlt;Urigt; _images) {  this.mContext = _context;  this.imagesArrList = _images;  inflater = LayoutInflater.from(this.mContext);  }   @Override  public int getCount() {  return imagesArrList.size();  }   @Override  public Object getItem(int position) {  return imagesArrList.get(position);  }   @Override  public long getItemId(int position) {  return 0;  }   @Override  public View getView(int position, View convertView, ViewGroup parent) {  NewViewHolder mViewHolder;  Uri image = imagesArrList.get(position);   if (convertView == null) {  convertView = inflater.inflate(R.layout.image_grid_view, parent, false);  mViewHolder = new NewViewHolder(convertView);  convertView.setTag(mViewHolder);  } else {  mViewHolder = (NewViewHolder) convertView.getTag();  }   if (image != null) {  mViewHolder.ivUserImage.setImageURI(image);  }   return convertView;  }   private static class NewViewHolder {  ImageView ivUserImage;  public NewViewHolder(View item) {  ivUserImage = item.findViewById(R.id.userImage);  }  } }  

Основная Деятельность:

 @Override public void onClick(View view) {  int id = view.getId();  if (id == R.id.fab) {  IMAGE_FILE = UUID.randomUUID().toString()   ".jpg";  File imageFileReference = createImageFile(IMAGE_FILE);  Uri imageUri = FileProvider.getUriForFile(this, "--REDACTED FOR PRIVACY---", imageFileReference);  Log.i("FILEPROVIDERLOG", "File Path: "   imageFileReference.getAbsolutePath());  Log.i("FILEPROVIDERLOG", "File URI: "   imageUri);  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);  intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);  intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);  ActivityCompat.startActivityForResult(this, intent, 0, null);  }  }   @Override  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {  super.onActivityResult(requestCode, resultCode, data);  File imageFileReference = getImageFileReference(IMAGE_FILE);  Log.i("FILEPROVIDERLOG", "File Path: "   imageFileReference.getAbsolutePath());  BitmapFactory.Options options = new BitmapFactory.Options();  options.inSampleSize = 2;  Bitmap bitmap = BitmapFactory.decodeFile(imageFileReference.getAbsolutePath());  iv.setImageBitmap(bitmap);  Uri imageURI = FileProvider.getUriForFile(this, "--REDACTED FOR PRIVACY---", imageFileReference);  Log.i("FILEPROVIDERLOG", "File URI: "   imageURI);  iv.setImageURI(null);  iv.setImageURI(imageURI);  imagesArrList.add(imageURI);  gridView.setAdapter(new GridAdapter(this, imagesArrList));  }   private File createImageFile(String _fileName) {  File imageFile = getImageFileReference(_fileName);  try{  imageFile.createNewFile();  } catch (IOException e) {  e.printStackTrace();  return null;  }  return imageFile;  }   private File getImageFileReference(String _fileName) {  File protectedStorage = getExternalFilesDir(IMAGE_FOLDER);  return new File(protectedStorage, _fileName);  }  }  

Любые идеи будут высоко оценены. Заранее спасибо, что нашли время прочитать и/или ответить на мой вопрос!

Комментарии:

1. Я вижу, вы отобразили выбранное изображение в iv , верно? Появится ли там изображение, также добавьте журнал, чтобы увидеть размер вашей сетки

2. @MouaadAbdelghafourAITALI Изображение там не отображается. Я предполагаю, что вы имеете в виду в моем макете с левой стороны? Я добавлю журнал, чтобы проверить размер. Спасибо вам за совет!

3. сначала выберите изображение и отобразите его ImageView , если оно не отображается, затем убедитесь, что разрешение на хранение предоставлено

4. Итак, я загрузил изображение-заполнитель, и, похоже, оно загружается просто отлично. Используя изображение из моей папки для рисования. Кроме того, включены разрешения uri.