【发布时间】:2021-12-15 16:16:33
【问题描述】:
如何获取 Firebase 实时数据库中特定子项的键值(Android 开发)? 我想根据所选主题获取特定键的值。假设如果用户选择 java 那么我想获得 '-MnLZAaa1pmVpRusEG8s'(在蓝色框中)。我试图获取列表中的主题名称和主题唯一键,然后将其与用户选择的字符串进行比较,但不知道为什么我得到一个空值。我该怎么做?
public String getSubjectUuid() {
List<String> subjectNamesList = new ArrayList<>();
List<String> subjectUuidList = new ArrayList<>();
DatabaseReference addedSubjectReference = FirebaseDatabase
.getInstance()
.getReference(classCreatorPhoneNo + "/" + "class_list" + "/" + classUuid + "/" + "added_subject");
addedSubjectReference
.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
if (snapshot.exists()) {
subjectNamesList.add(snapshot.child("subject_name").getValue(String.class));
subjectUuidList.add(snapshot.child("subject_uuid").getValue(String.class));
}
}
@Override
public void onChildChanged(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot snapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot snapshot, @Nullable String previousChildName) {
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
for (int i = 0; i < subjectNamesList.size(); i++) {
if (selectedSubject.equals(subjectNamesList.get(i))) {
classKey = subjectUuidList.get(i);
break;
}
}
return classKey;
}
【问题讨论】:
标签: java android firebase firebase-realtime-database