gpt4 book ai didi

java - 从 Android Studio 中的 Firebase 数据库读取对象

转载 作者:行者123 更新时间:2023-12-02 11:50:04 25 4
gpt4 key购买 nike

使用 Android Studio 和 Firebase,我尝试写入和读取一些数据。

我有一个 Pub 类,其中包含以下内容:

package com.example.jef.pubbuddy.Database;
import java.util.ArrayList;
public class Pub {
private String name;
private float longitude;
private float lattitude;
private ArrayList<Pub> Pubs = new ArrayList<>();
public Pub() {}

public void setName(String name)
{this.name = name;}
public void setLongitude(float longitude)
{this.longitude = longitude;}
public void setLatitude(float lattitude)
{this.lattitude = lattitude;}
public String getName()
{return name;}
public float getLatitude()
{return lattitude;}
public float getLongitude()
{return longitude;}

我使用 .push() 方法将 Pub 对象写入数据库。以下是我将其写入数据库的方法。它在 Firebase 控制台中显示得很好,所以我相信问题不在于这里:

Pub p1 = new Pub();
p1.setName("The name of the pub");
p1.setLatitude((float) 4.699545);
p1.setLongitude((float) 50.878267);
myRef.child("PUSH_TEST").push().setValue(p1);

之后我尝试使用以下代码来读取它。请注意,消息方法仅用于将一些信息附加到 TextView,因此我可以在我的物理设备上进行调试。但是,没有任何监听器事件被触发。有谁知道我在这里做错了什么?已经遵循官方 Firebase 文档和“Firebase 周末”培训视频。还在 Stackoverflow 上查找了无数答案,但我似乎无法使其工作。

提前致谢。

public class Database extends AppCompatActivity {
private TextView tv;
int messages;
private ArrayList<Pub> pubList = new ArrayList();
private FirebaseDatabase database;
private DatabaseReference myRef;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_database);

database = FirebaseDatabase.getInstance();
myRef = database.getReference();
init();
writeData();
message("creating and attaching the listener");
ChildEventListener myListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s)
{
message("The childEvent triggered");
Pub p = dataSnapshot.getValue(Pub.class);
message("The name of this pub = " + p.getName());
pubList.add(p);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
myRef.child("PUSHTEST").addChildEventListener(myListener);
}

最佳答案

一切都是正确的,除了这个:

在这里设置值:

myRef.child("PUSH_TEST").push().setValue(p1);

在这里您可以检索值:

myRef.child("PUSHTEST").addChildEventListener(myListener);

您编写的子项是错误的,因为它不在您的数据库中。所以只需将其更改为:

myRef.child("PUSH_TEST").addChildEventListener(myListener);

child(..) 中的名称需要与数据库中的名称相同

关于java - 从 Android Studio 中的 Firebase 数据库读取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47953996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com