【问题标题】:unable to retrieve images from firebase无法从 firebase 检索图像
【发布时间】:2020-08-05 02:04:14
【问题描述】:

我想从 Firebase 显示文本和图像时遇到问题,文本可以出来而图像无法显示。

这是我的模型类:


public class Model {
    String title, image, description;

    //constructor
    public Model(){}

    //getter and setters press Alt+Insert

    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;
    }

这是我的视图持有者类

public class ViewHolder extends RecyclerView.ViewHolder {
    View mView;
    public ViewHolder(View itemView) {
        super(itemView);

        mView = itemView;
    }



        public void setDetails (Context ctx, String title, String description, String image){
            //Views
            TextView mTitleTv = mView.findViewById(R.id.rTitleTv);
            TextView mDetailTv = mView.findViewById(R.id.rDescriptionTv);
            ImageView mImageIv = mView.findViewById(R.id.rImageView);
            //set data to views
            mTitleTv.setText(title);
            mDetailTv.setText(description);
            Picasso.get().load(image).into(mImageIv);
        }


    }

这是我的主要活动


package com.ainuralizar.firebaseproject;

import android.os.Bundle;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class PostListActivity extends AppCompatActivity {

    RecyclerView mRecyclerView;
    DatabaseReference mRef;
    FirebaseDatabase mFirebaseDatabase;

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



        ActionBar actionBar = getSupportActionBar();
        actionBar.setTitle("post list");

        mRecyclerView = findViewById(R.id.recyclerView);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mFirebaseDatabase = FirebaseDatabase.getInstance();
        mRef = mFirebaseDatabase.getReference("Data");
    }

    @Override
    protected void onStart() {
        super.onStart();
        FirebaseRecyclerAdapter<Model,ViewHolder> firebaseRecyclerAdapter =
                new FirebaseRecyclerAdapter<Model, ViewHolder>(Model.class,R.layout.row , ViewHolder.class ,mRef) {
                    @Override
                    protected void populateViewHolder(ViewHolder viewHolder, Model model, int position) {
                        viewHolder.setDetails(getApplicationContext(),model.getTitle(),model.getDescription(),model.getImage());
                    }
                };

        mRecyclerView.setAdapter(firebaseRecyclerAdapter);
    }


我已尝试更改我的数据,但仍无法显示存储在 firebase 中的图像。我希望你们有一个解决方案,对不起英语不好

database

【问题讨论】:

  • 您是否调试了应用程序以获得图像参考?您在此处定义的图像 Picasso.get().load(image).into(mImageIv);
  • 显示数据库的图像,而不是链接。将其添加到您的问题中。

标签: android firebase firebase-realtime-database android-recyclerview picasso


【解决方案1】:

您使用的图片网址无效,图片网址应以https://http:// 开头,例如

https://i.stack.imgur.com/ukJXt.png

http://i.stack.imgur.com/ukJXt.png

请使用浏览器验证图像 URL,如果 URL 有效,您将能够查看图像。

【讨论】:

  • 谢谢你的回答,但有没有其他选择,我只输入链接而不从存储中获取 https?
  • 但是为什么要在没有 https 或 http 的情况下存储图像 URL
  • 哦,你说得对,我刚刚看了文档,我想我可以不用https来检索数据。谢谢先生的帮助
  • @AINNU 您也可以决定不存储 imageUrl ,我知道图像的名称是什么,我的应用程序我将图像命名为与图像所在的人节点的引用键相同,在运行时,我使用该名称查询存储并获取它的 url,如果 url 被撤销,这会有所帮助,请注意,如果您撤销 url,它的对象仍将包含旧的对象
猜你喜欢
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 2016-02-12
  • 2021-01-14
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多