gpt4 book ai didi

java - android firebase数据库如何从子节点检索所有数据

转载 作者:行者123 更新时间:2023-12-02 10:46:22 25 4
gpt4 key购买 nike

我有一个应用程序,它可以从 Firebase 检索大量数据,但我似乎无法使其工作。

database = FirebaseDatabase.getInstance();
myRef = database.getReference().child("Sold").child("Item");

myListView = (ListView)findViewById(R.id.listView);
final ArrayAdapter<String> myArrayAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, myArrayList);


myListView.setAdapter(myArrayAdapter);

myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String value = dataSnapshot.getValue(String.class);
myArrayList.add(value);
myArrayAdapter.notifyDataSetChanged();
}

它没有给我任何错误,但它只是关闭我的应用程序。我正在尝试访问 URL/Sold/Item 并在 ListView 中传递数据

Click this to see my firebase thank you

最佳答案

您正在使用以下内容创建引用:

database = FirebaseDatabase.getInstance();
myRef = database.getReference().child("Sold").child("Item");

然后添加 ChildEventListener 。这意味着DataSnapshot在你的onChildAdded将使用 DUMMY 1 的快照进行调用首先是节点,然后是 DUMMY 2 的快照节点。

您正在调用 dataSnapshot.getValue(String.class)onChildAdded 。但自从 DUMMY 1DUMMY 2具有多个属性,它们没有单个字符串值。因此该调用返回 null ,这可能是导致您出现问题的原因。

如果您想添加 DUMMY 1 , DUMMY 2 key 本身到适配器,您可以调用 dataSnapshot.getKey() 。否则,您可以使用 dataSnapshot.child("Description").getValue(String.class) 获取特定子属性的值。 .

所以:

myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String key = dataSnapshot.getKey();
String description = dataSnapshot.child("Description").getValue(String.class);
Long quantity = dataSnapshot.child("Quantity").getValue(Long.class);
myArrayList.add(key+": "+description+" ("+quantity+")");
myArrayAdapter.notifyDataSetChanged();
}
<小时/>

如果您想将整个值读入表示该项目的类(所谓的 POJO),最简单的类是:

public class Item {
public String Description;
public Long Quantity;
}

请注意,字段的名称(包括大小写)必须与数据库中的属性名称完全匹配。您可以像这样使用上面的类:

myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String key = dataSnapshot.getKey();
Item item = dataSnapshot.getValue(Item.class);
myArrayList.add(key+": "+item.description+" ("+item.quantity+")");
myArrayAdapter.notifyDataSetChanged();
}

关于java - android firebase数据库如何从子节点检索所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52541406/

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