gpt4 book ai didi

java - 从 Firebase 加载数据仅在第一次返回 null

转载 作者:行者123 更新时间:2023-11-29 01:03:23 25 4
gpt4 key购买 nike

我正在将两个值写入 firebase 数据库,如下所示

    String key = mClientDatabaseReference.push().getKey();

// get user input and set it to result
// edit text
Client client = new Client( firstNameEditText.getText().toString(), lastNameEditText.getText().toString() );
mClientDatabaseReference.child( key ).child( "firstName" ).setValue( firstNameEditText.getText().toString() );
mClientDatabaseReference.child( key ).child( "lastName" ).setValue( lastNameEditText.getText().toString() );

除了 ChildEventListener 发生的一件烦人的小事外,一切正常。当调用 onChildAdded 时,它是在设置名字的值之后调用的,它不会等到第二个名字的值被设置,所以我只得到名字,第二个名字为空,我必须重新打开获取完整名字和姓氏的 Activity 。这是 onChildAdded 中的代码

 public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Client client = dataSnapshot.getValue( Client.class );
mClientAdapter.add( client );
Log.d(TAG+"Added",dataSnapshot.getValue(Client.class).toString());
}

我怎样才能克服这个问题?

最佳答案

您可以使用 addvalueeventlistener:

 DatabaseReference reference = FirebaseDatabase.getInstance().getReference("users");

reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot datas: dataSnapshot.getChildren()){
String name=datas.child("firstName").getValue().toString();
String lname=datas.child("lastName").getValue().toString();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});

既然你只想检索数据,那么如果你想读取一次,那么使用 addvalueeventlistener 或 addListenerForSingleValueEvent。假设您有以下数据库:

users
userid
firstName:firstname
lastName: lastname

关于java - 从 Firebase 加载数据仅在第一次返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49342813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com