Изображения, загруженные из магазина с Пикассо, не отображаются в просмотре карты - PullRequest
0 голосов
/ 05 июня 2019

Я загружаю изображения в CardView с помощью Picasso из Firebase, но изображения не отображаются

Я следую этому руководству: Как отобразить данные из Firestore в RecyclerView с Android? . Однако изображения все еще не видны.

макет карты

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_marginVertical="8dp"
    app:cardCornerRadius="6dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imageCardView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitCenter"
            android:contentDescription="@string/user_image" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="4dp"
            android:textAlignment="center"
            android:textColor="#fff"
            android:textSize="20sp" />

    </LinearLayout>

</android.support.v7.widget.CardView>

адаптер, которым я пользуюсь

adapter = new FirestoreRecyclerAdapter<Post, PostViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull PostViewHolder postViewHolder, int position, @NonNull Post post) {
                postViewHolder.setPostImage(post.getImageUrl_1());
            }

            @NonNull
            @Override
            public PostViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                View view = LayoutInflater.from(parent.getContext())
                        .inflate(R.layout.card_view_layout, parent, false);
                return new PostViewHolder(view);
            }
        };
        recyclerView.setAdapter(adapter);

Код для загрузки изображений.

void setPostImage(final String imageURL) {
    ImageView imageView = view.findViewById(R.id.imageCardView);
    //imageView.setImageBitmap(getBitmapFromURL(imageURL));
    Picasso.with(view.getContext())
           .load(imageURL)
           .into(imageView);
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(view.getContext(), imageURL, Toast.LENGTH_SHORT).show();
        }
    });
}

Я ожидаю, что изображения из моего хранилища Firebase будут загружаться в мои карты, но они не видны. Однако я знаю, что они загружаются в представления изображений, потому что загружается правильное количество просмотров карт в зависимости от количества изображений в хранилище, и при нажатии на просмотр изображений в тосте отображаются правильные URL-адреса. Если есть что-то еще, что я должен добавить, пожалуйста, дайте мне знать. Любая помощь будет принята с благодарностью.

Edit:

Я добавил .placeholder () в Picasso, и теперь он показывает заполнитель, однако, когда я нажимаю на изображение, тост по-прежнему отображает URL для хранилища.

Ответы [ 3 ]

0 голосов
/ 06 июня 2019

Начиная с Android P, конфигурация сетевой безопасности необходима для обработки всех http-запросов, возможно, что-то связано с этим.Вы можете проверить это решения

0 голосов
/ 06 июня 2019

Я нашел проблему, с которой столкнулся. Оказывается, ссылка, которую я отправлял в Пикассо, была не той, которую я искал. Следующий вопрос лучше всего описывает мою проблему: Как получить URL из Firebase Storage getDownloadURL . Однако, спасибо Dor за помощь в правильном использовании Picasso.

0 голосов
/ 05 июня 2019

Похоже, Пикассо изменил функцию с на get link так что, может быть, попробовать что-то вроде этого

Picasso.get()
    .load(imageURL)
    .placeholder(some place holder image)
    .fit()
    .into(imageView);
...