有人可以帮我使用valueeventlstener吗?
我在firebase中有这个数据库结构
Categories
-KvxSVFRZIO3ENylF0id
color: "ff99ffff"
name: "Cars"
-KvxbiS-L6iALA7Os8q4
color: "fffffdd4"
name: "Movies"
现在我希望在给出名称Movies的时候在字符串中输入fffffdd4。
mkatcolordb.child("Categories").orderByChild("name").equalTo(item).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String areaName = dataSnapshot.child("color").getValue(String.class);
StyleableToast.makeText(NewThemaActivity.this, areaName, Toast.LENGTH_LONG, R.style.StyledToast).show();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
此代码不起作用
答案 0 :(得分:2)
对Firebase数据库执行查询时,可能会有多个结果。因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。
您的代码需要处理此问题。为您的代码执行此操作的最简单方法:
mkatcolordb.child("Categories").orderByChild("name").equalTo(item).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot colorSnapshot: dataSnapshot.getChildren()) {
String areaName = colorSnapshot.child("color").getValue(String.class);
StyleableToast.makeText(NewThemaActivity.this, areaName, Toast.LENGTH_LONG, R.style.StyledToast).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});