0
私はこのメソッドを使用してAndroidでデータを取得していますが、常にnullを返します。 ondatachange
の中でlistFinalBus
はnullではありませんが、戻り値が来るとnull値が返されます。Firebaseデータを常に取得しています
public List<Bus> findAllBus() {
// Read from the database
myRef.child("Bus").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "onDataChange: " + dataSnapshot.toString());
for (DataSnapshot userDataSnapshot : dataSnapshot.getChildren()) {
Bus bus = userDataSnapshot.getValue(Bus.class);
Log.d(TAG, "onDataChange: after get value " + bus.getId().toString()+" nom "+bus.getNom().toString());
listFinalBus.add(bus);
Log.d(TAG, "onDataChange: list before return not null her" + listFinalBus.size());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Log.d(TAG, "onDataChange: list firas return" + listFinalBus.size());
//return is null
return listFinalBus;
}
コールバックはこのようには動作しません。あなたのリスナーはあなたの帰りの後に呼ばれます。このようなシナリオ:databaseReferenceにリスナーを追加する - >あなたがnull値を返す - >あなたのリスナーが呼び出される。 –
次に私は何をすべきですか? –
@PhoenixWang plzどうすればいいですか? –