那是因为你正在使用ValueEventListener
.如果查询匹配多个子节点,则返回所有这些子节点的列表.即使只有一个匹配的孩子,它仍然是一个列表.而且,由于您正在调用getKey()
该列表,因此您将获得运行查询的位置的键.
要获取匹配子项的键,请遍历快照的子项:
mDatabase.child("clubs") .orderByChild("name") .equalTo("efg") .addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { String clubkey = childSnapshot.getKey();
但请注意,如果您认为俱乐部名称是唯一的,您可以将俱乐部存储在他们的名下,并在没有查询的情况下访问正确的俱乐部:
mDatabase.child("clubs") .child("efg") .addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String clubkey = dataSnapshot.getKey(); // will be efg