如何从Android Studio中的Firebase实时数据库中的URL检索图像

问题描述 投票:0回答:1

我正在尝试提取名为“imageUrl”的URL,以便从Firebase实时数据库中的URL检索图像,如下所示:

这是Firebase实时数据库中的DB结构:

enter image description here

我有这个DB:

{
  "Image": {
    "01": {
      "id": "1",
      "name": "img1",
      "imageUrl": "https://www.pexels.com/photo/beach-calm-clouds-coast-457881/"
    },
    "02": {
      "id": "2",
      "name": "img2",
      "imageUrl": "https://www.pexels.com/photo/sea-beach-holiday-vacation-42151/"
    }
  }
}

这是Android Studio中的一项活动:

    public class BigToePose extends AppCompatActivity {

    private Context context;
    private ImageView img;

    private FirebaseDatabase database;
    private DatabaseReference mReference;
    private DatabaseReference childReference;

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

        context = this;
        img = findViewById(R.id.imageView);

        database = FirebaseDatabase.getInstance();
        mReference = database.getReference();
        childReference = mReference.child("Image").child("01");
    }

    @Override
    protected void onStart() {
        super.onStart();
        childReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String url = dataSnapshot.child("imageUrl").getValue(String.class);
                Picasso.with(context)
                        .load(url)
                        .into(img);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
}

我尝试将此代码作为从Android Studio中的其他活动移动的活动执行,但看起来活动未显示。我怎样才能让它发挥作用?

android firebase firebase-realtime-database imageurl
1个回答
0
投票

由于您尝试在执行的方法之外获取firebase引用,因此它可能根本不会被执行。尝试更改以下代码: -

public class BigToePose extends AppCompatActivity {

private Context context;
private TextView url;
private ImageView img;

private FirebaseDatabase database ;
private DatabaseReference mReference ;
private DatabaseReference childReference ;

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

    context = this;
    img = findViewById(R.id.imageView);

   // place here
   database = FirebaseDatabase.getInstance();
   mReference = database.getReference("Image");
   childReference = mReference.child("01");
 }

@Override
protected void onStart() {
    super.onStart();
    childReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String message = dataSnapshot.child("imageUrl").getValue(String.class);
            Picasso.with(context)
                    .load(message)
                    .into(img);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
      });
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.