現在、私はリストオブジェクトを作成し、そこに多数のフィールドを格納します。私が保存しなければならない2つのフィールドは、現在のユーザーの電子メールと名前です。私は変更を加える前にFirebaseデータベースからいくつかのフィールドを取得するにはどうしたらいいですか?
dbRef = database.getReference().child("Users").child(emailKey);
dbRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
UserInfo userIn = dataSnapshot.getValue(UserInfo.class);
email1 = userIn.email;
sellerName = userIn.username;
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
このコードのビットの後、私はライン
DatabaseReference temp = dbRefL.push();
temp.setValue(l);
を持って、このコードはすべて、ボタンを押すと、私によって呼び出されると、以下のように、これらの二つのフィールドを取得しようとしています。最初にボタンを押すと、Listオブジェクト全体がFirebaseにプッシュされます。ユーザーのメールとユーザー名が空であることを除いて、ユーザーのメールとユーザー名を除いて必要な方法です。 2回目にボタンを押すと、弦はそこにあります。
これは、OnDataChangeがListオブジェクトをプッシュした後にのみ実行されるからです。これは本当ですか?リスティングオブジェクトをプッシュする前にOnDataChangeを実行するにはどうすればよいですか?
私はあなたがあなたの湖底のclicklistener上の外であなたのValueEventListenerを置くべきだと思います。 –