java - 如何检索已存储在 firebase 数据库中并在回收器 View 中显示的图像?

标签 java android firebase

我目前正在开发一个使用 firebase 的项目。我在使用 firebase 时遇到问题。如何检索图像?

public class ViewHolder extends RecyclerView.Adapter<ViewHolder.ImageViewHolder> {
    private  Context mContext;
    private List<Model> mModel;

    public ViewHolder(Context context, List<Model> models)
    {
        mContext=context;
        mModel=models;
    }
    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View v = LayoutInflater.from(mContext).inflate(R.layout.row, viewGroup,false);
        return new ImageViewHolder(v);
    }

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder imageViewHolder, int i) {
        Model mModelcur = mModel.get(i);
        imageViewHolder.img_description.setText(mModelcur.getDescription());
        Picasso.get().load(mModelcur.getImage()).into(imageViewHolder.image_view);
    }

    @Override
    public int getItemCount() {
        return mModel.size();
    }

    public class ImageViewHolder extends RecyclerView.ViewHolder
    {
        public TextView img_description;
        public ImageView image_view;
        public ImageViewHolder(@NonNull View itemView) {
            super(itemView);

            img_description = itemView.findViewById(R.id.rDescription);
            image_view = itemView.findViewById(R.id.rImageview);
        }
    }  
}

上面的代码显示了 viewholder,而此代码用于使用 viewholder 以及作为模型的 getter 和 setter 来执行 firebase

public class Ordering extends AppCompatActivity {

    private RecyclerView mRecyclerView;
    private ViewHolder mAdapter;
    private DatabaseReference mDatabaseReference;
    private List<Model> mModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ordering);

        mRecyclerView= findViewById(R.id.recyclerview);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

        mModel = new ArrayList<>();
        mDatabaseReference=FirebaseDatabase.getInstance().getReference("Data");
        mDatabaseReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot postSnapshot:dataSnapshot.getChildren())
                {
                    Model model=postSnapshot.getValue(Model.class);
                    mModel.add(model);
                }
                mAdapter=new ViewHolder(Ordering.this, mModel);
                mRecyclerView.setAdapter(mAdapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(Ordering.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();
            }
        });
    }
}

代码可以工作,但它只显示这个 recycler part 。我已经建立了如下所示的数据库 database 。如何显示已存储在数据库中的图像并在回收器 View 中显示?我对使用 firebase 还很陌生,有人可以帮助我吗?

这是我的 model.class @Alex 公共(public)类模型{

String title,image,description; //These must be match in the firebase database

//Constructor
public Model()
{

}

//getter and setter


public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

public String getDescription() {
    return description;
}

public void setDescription(String description) {
    this.description = description;
}

}

最佳答案

您收到以下错误:

No setter/field for image found on class com.example.firebaseproject.Model

因为您在 Model 类中使用不带修饰符的字段。要解决此问题,请将修饰符更改为 private:

private String title, image, description;

关于java - 如何检索已存储在 firebase 数据库中并在回收器 View 中显示的图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56103987/

相关文章:

java - 使用 PhpSecLib 和 BouncyCaSTLe 的 PHP 和 Java Decrpytion 错误

java - 请求的资源不可用。在 eclipse 上使用 tomcat 运行 spring mvc 程序

java - 如何卸载 Java 标准库

java - 在没有 Android Studio 运行选项的情况下运行 UiAutomator 测试

Android gradle 无法解析 : play-services-basement

firebase - 带 orderBy 的 firestore 相等过滤器

java - 获取多部分/表单上传进度的替代方法 (Android)

java - 异步任务没有被取消

ios - 在 Swift 中使用 GeoFire 查询不会提供有用的输出

firebase - Google Cloud Functions 出现 ECONNRESET 错误,直到我重新部署