Я пытаюсь получить идентификатор конкретного ребенка в базе данных Firebase. База данных выглядит следующим образом:getKey() возвращает значение вместо ID
Users:
- id: user1
- id: user2
- ...
Теперь я хочу, чтобы вернуть ID
каждого пользователя, и я попробовал с этим;
DatabaseReference databaseRef = FirebaseDatabase.getInstance().getReference();
ValueEventListener users = databaseRef.child("Users").child(bundle.getString("User")).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String userID = dataSnapshot.getKey();
mTextView.setText(userID);
}
@Override
public void onCancelled(DatabaseError databaseError) {
//error
}
});
bundle.getString("User")
является строка, которая содержит значение которого пользователь Я хочу, чтобы получить ID
от.
Когда я открываю приложение, текст в mTextView просто содержит имя пользователя вместо идентификатора.
Что я здесь сделал неправильно?
Приложение представляет собой ListView в основном мероприятии, содержащем всех пользователей. Когда пользователь нажимает на элемент списка, открывается новое действие. В этом упражнении я хочу показать информацию о выбранном пользователе, но для этого я хочу, чтобы получить идентификатор, чтобы найти соответствующую информацию в базе данных с тем же ID ..
JSON:
{
"Users" : [ null, "Jef", "Peter", "Jean", "Ronny" ]
}
Попробуйте записать этот 'dataSnapshot.getRef(). ToString()' и опубликовать результат.На основе вашей структуры базы данных 'bundle.getString (« Пользователь »)' должна быть частью 'id', правильно? Кроме того, пожалуйста, экспортируйте базу данных как JSON, а затем опубликуйте ее здесь. – Wilik
@Wilik dataSnapshot.getRef(). ToString() возвращает ссылку на дочерний элемент в базе данных, и никакой пакет bundle.getString («Пользователь») не содержит значения, например, «user1», из которого я хочу ID .. –
Nothing неверно в вашем коде. Но, разместив структуру базы данных как JSON, мы можем найти, в чем проблема, вы можете удалить любую конфиденциальную информацию. Кстати, у вас есть ID уже в 'bundle.getString (« Пользователь »), почему вы пытаетесь получить одну и ту же строку, вызвав' dataSnapshot.getKey() '? Если вы хотите получить значение, вы должны вместо этого называть 'dataSnapshot.getValue()' – Wilik