作者:我的王国1997_113 | 来源:互联网 | 2023-08-24 11:15
我是Android Studio和Firebase的新手。
我正在尝试从Firebase检索数据。我有节点Orders
,并且该节点具有唯一的id
,choices
和price
。
这是我的Firebase的外观:
my-application0-8b65a
Orders
- Lw4hgcNwuCitXUKHdNh
choices:"Pasta\n"
price:19
- Lw7zID257gZsJN9s0J3
choices:"Shawarma\nPasta\n"
price: 27
我尝试使用addValueEventListener
来检索大学的所有订单,但是当我运行该应用程序并转到检索页面时,它又返回到主要活动页面。我正在使用listview(id:list_view)来显示数据。
public class DataRetrived extends AppCompatactivity {
private DatabaseReference mDatabase;
private ListView mUserList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dataactivity);
mDatabase = FirebaseDatabase.getInstance().getReference();
mUserList = findViewById(R.id.list_view);
final List ordersList = new ArrayList<>();
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(Datasnapshot snapshot) {
ordersList.clear();
for (Datasnapshot postsnapshot : snapshot.getchildren()) {
Orders orders = postsnapshot.getvalue(Orders.class);
ordersList.add(orders);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: ");
}
});
}
}
Firebase ref =新的Firebase(FIREBASE_URL);
ref.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot快照){
Log.e(“ Count”,“” + snapshot.getChildrenCount());
对于(DataSnapshot postSnapshot:snapshot.getChildren()){
post = postSnapshot.getValue(.class);
Log.e("Get Data",post.());
}
}
@Override
public void onCancelled(FirebaseError firebaseError){
Log.e(“读取失败:”,firebaseError.getMessage());
}
});
,
首先添加对节点Orders
的引用,然后在onDataChange内删除for循环以能够检索对象Orders
。
更改此:
mDatabase = FirebaseDatabase.getInstance().getReference();
对此:
mDatabase = FirebaseDatabase.getInstance().getReference("Orders");
然后将onDataChange()
更改为以下内容:
public void onDataChange(DataSnapshot snapshot) {
ordersList.clear();
Orders orders = snapshot.getValue(Orders.class);
ordersList.add(orders);
}