Не удается загрузить фотографию из Firebase - пустое изображение - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть адаптер GridView, и я хочу загружать фотографии из Firebase Storage через URL-адрес фотографии.

Когда я передаю URL-адрес в GridViewAdapter, фотография пуста.Есть место, но нет изображения.Как и прозрачная картинка.

Если я передаю URL-адрес изображений, найденный в Google, он работает, но не работает с URL-адресом Firebase Storage.Что не так?

Вот так я пытаюсь получить URL из хранилища Firebase Я получаю DataSnapshot узла, который содержит все URL

databaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                photos.clear();
                for(DataSnapshot ds: dataSnapshot.getChildren()){
                    String photoURL = ds.getValue(String.class);
                    try {
                        photos.add(photoURL);


                    }catch (NullPointerException e) {
                    }
                }
                gridViewAdapter = new GridViewAdapter(getContext(), photos);
                gridView.setAdapter(gridViewAdapter);

            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                }
        });

myGridViewAdapter.class, метод getView

@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View gridView = convertView;

        if(convertView == null){

            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            gridView = inflater.inflate(R.layout.image_item,null);

        }

        ImageView imageView = gridView.findViewById(R.id.image_from_photo_album);

        Picasso.with(context).load(photos.get(position)).into(imageView);

        return imageView;
    }

ScreenView без хранилища Firebase URL:

ScreenView without Firebase Storage URL

ScreenView с хранилищем Firebase URL:

ScreenView with Firebase Storage URL

Ответы [ 4 ]

1 голос
/ 17 апреля 2019

Попробуйте изменить Picasso.with(context).load(photos.get(position)).into(imageView) на: String url = photos.get(position); Picasso.with(context).load(url).into(imageView)

Также: может быть, ваш URL-адрес фото из Firebase всегда пуст, вы когда-нибудь его отлаживали?

0 голосов
/ 17 апреля 2019

Проблема заключалась в том, что я установил атрибут wrap_content для layout_width и layout_height в ImageView, который отвечал за отображение изображения.Ранее высота этого изображения была очень очень большой (я не знаю почему), и это вызывало проблему.

Примечание: GridView для URL изображений из Google с разрешением 800x450 работает отлично, проблема только вс фотографиями из Firebase Storage.

Проблема частично решена, потому что, если я устанавливаю фиксированный размер изображения, он отображает изображение, но у меня все еще есть некоторые проблемы ... Например, GridView иногда накладывает два изображения на один и тот жеposition, или первые элементы GridView не загружаются.

0 голосов
/ 17 апреля 2019

Если ваш URL-адрес правильный, ImageView правильно отображает другие изображения, то кажется, что в Picasso возникли некоторые возможные проблемы:

  • У вас проблемы с кэшированием или загрузчиком. См. Эту тему Как использовать кэширование диска в Picasso? возможно, это поможет вам.
  • Загрузка вашего URL завершена с ошибкой. Попробуйте добавить обработку ошибок в цепочку Пикассо
Picasso.with(context)
    .load(photos.get(position))
    .error(R.drawable.error_image)
    .placeholder(R.mipmap.ic_launcher)
    .into(imageView);

подробнее здесь

0 голосов
/ 16 апреля 2019

Это очень широко.Когда вы «передаете» URL-адрес в свой GridViewAdapter, как вы загружаете изображение?Возможно, загрузите ваш код, чтобы мы могли вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...