如何获得给定名称firebase的颜色

时间:2017-10-08 22:44:39

标签: android firebase firebase-realtime-database

有人可以帮我使用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) {

    }
});

此代码不起作用

1 个答案:

答案 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
    }
});