首页 > 解决方案 > 图像未显示在 ImageView 中(选项卡式活动中 ViewPager 内的 Fragent)-毕加索未替换占位符

问题描述

我有一个选项卡式活动,每个选项卡都包含一个带有 recyclerView 的片段。recyclerView 中的项目由带有文本的图像组成,两者都从 Firebase 实时数据库中获取。

一切似乎都运行良好,没有错误,但是当我运行应用程序时,会获取并显示名称,而不是图像。

这是 Firebase 的数据库结构

这是显示项目名称但没有用数据库中的图像替换占位符的模拟器

这是片段

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.andrei.bucatariadebuzunar.Clases.ImageUploadInfo;
import com.andrei.bucatariadebuzunar.Clases.ImageUploadInfoViewHolder;
import com.andrei.bucatariadebuzunar.R;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.firebase.ui.database.FirebaseRecyclerOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.squareup.picasso.Picasso;

public class FripturiFragment extends Fragment {


    public RecyclerView recyclerView;
    private DatabaseReference databaseReference;
    FirebaseRecyclerOptions<ImageUploadInfo> options;
    FirebaseRecyclerAdapter<ImageUploadInfo,ImageUploadInfoViewHolder>adapter;


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_layout, container, false);
        databaseReference = FirebaseDatabase.getInstance().getReference().child("Recipes_Images").child("Fripturi");
        databaseReference.keepSynced(true);
        recyclerView = rootView.findViewById(R.id.recyclerViewRecipes);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

        LoadData();

        return rootView;
    }

    private void LoadData() {
        options = new FirebaseRecyclerOptions.Builder<ImageUploadInfo>().setQuery(databaseReference,ImageUploadInfo.class).build();
        adapter = new FirebaseRecyclerAdapter<ImageUploadInfo, ImageUploadInfoViewHolder>(options) {
            @Override
            protected void onBindViewHolder(@NonNull ImageUploadInfoViewHolder imageUploadInfoViewHolder, int position, @NonNull ImageUploadInfo model) {
                imageUploadInfoViewHolder.textView.setText(model.getImageName());
                Picasso.get().load(model.getImageURL()).placeholder(R.drawable.hat).into(imageUploadInfoViewHolder.imageView);
            }

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

这是 ImageUploadInfo 类

public class ImageUploadInfo {

    public String imageName;
    public String imageURL;

    public ImageUploadInfo() {
    }


    public ImageUploadInfo(String imageName, String imageURL) {
        this.imageName = imageName;
        this.imageURL = imageURL;
    }

    public String getImageName() {
        return imageName;
    }
    public String getImageURL() {
        return imageURL;
    }

    public void setImageName(String imageName) {
        this.imageName = imageName;
    }

    public void setImageURL(String imageURL) {
        this.imageURL = imageURL;
    }
}

标签: androidfirebaseandroid-fragmentsandroid-recyclerviewpicasso

解决方案


推荐阅读