您好这是我的firebase我正在尝试进行查询
https://i.stack.imgur.com/Ldexn.png
我试图通过搜索“name”=“Cafe”的位置来获取孩子“02”的值
category.orderByChild("name").equalTo("Cafe").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
Category catx = dataSnapshot.getValue(Category.class);
Toast.makeText(AdminCategories.this, "xx"+catx.getName(), Toast.LENGTH_SHORT).show();
admCatId.setText(dataSnapshot.getKey());
admCatName.setText(catx.getName());
admCatImage.setText(catx.getImage());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
但我使用此代码获取null ..
当我使用
时,我得到了理想的结果category.child("02").addValueEventListener(new .....)
请注意,我不使用任何适配器或列表,我只需通过名称搜索获得单个孩子的结果..
答案 0 :(得分:0)
对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
您的onDataChange
需要处理该列表,而该列表目前尚无法处理。最简单的变化是迭代dataSnapshot.getChildren()
:
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot categorySnapshot: dataSnapshot.getChildren()) {
Category catx = categorySnapshot.getValue(Category.class);
Toast.makeText(AdminCategories.this, "xx"+catx.getName(), Toast.LENGTH_SHORT).show();
admCatId.setText(categorySnapshot.getKey());
admCatName.setText(catx.getName());
admCatImage.setText(catx.getImage());
}
}
另见: