すべてのユーザー(名前、日付、ステータス)のリストを1つのリストに表示する必要があります。ここで、status = "LeavePending"は赤い矢印で示されています。これを行うために次のコードを記述しましたが、リストにユーザー名が表示されません。
このためにループごとにネストを使用しましたが、ユーザー名を取得していません。ユーザー名も表示するための解決策を教えてください。
私のコードでは:
これを解決するには、データベースに2回クエリを実行する必要があります。1回目はユーザーIDを取得し、2回目はそのIDに基づいてユーザー名を取得します。これは、Stringクラスを使用して非常に簡単な方法で実行できるため、次のコード行を使用してください。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference attendanceRef = rootRef.child("Attendance");
Query query = attendanceRef.orderByChild("status").equalsTo("Leave Pending");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String id = ds.child("id").getValue(String.class);
DatabaseReference idRef = rootRef.child("Users").child(id);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name = dataSnapshot.child("name").getValue(String.class);
Log.d("TAG", name);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
idRef.addListenerForSingleValueEvent(eventListener);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
query.addListenerForSingleValueEvent(valueEventListener);
logcatの結果は、ステータスがであるすべての出席者のすべての名前になりますLeave Pending
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加