0
せずにデータベースから値を取得、これは私が持っている無効です:どのように私は、データベースからいくつかの値を取得するための空間を作ることができますが、毎回データベースの変更を、このデータを更新していないEvenListener
private void getUser() {
userInformationsList.clear();
DatabaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
FirebaseUser user = mAuth.getCurrentUser();
userID = user.getUid();
nameID = dataSnapshot.child("Users").child(userID).child("name").getValue(String.class);
Lat = dataSnapshot.child("Users").child(userID).child("Coordenates/Rute/Lat").getValue(String.class);
Lng = dataSnapshot.child("Users").child(userID).child("Coordenates/Rute/Lng").getValue(String.class);
DataSnapshot dS = dataSnapshot.child("Coordenate").child(Lat).child(Lng);
toolbar.setTitle(nameID);
for(DataSnapshot Ds : dS.getChildren()) {
Object key = Ds.getKey();
String StringKey = String.valueOf(key);
getname(StringKey);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(SearchActivity.this,"Error 404",Toast.LENGTH_SHORT).show();
}
});
}
それは正常に動作します私がそれを呼び出すと、データベースが変更されるたびにトリガされます。私は考えているので、空きはonDataChange
またはValueEventListener
です。
DataSnapshotを呼び出す他のメソッドがある場合は、私は迷っています。
データが変更されるたびに引き続き動作しません。 –
それは奇妙に思えます。 'addListenerForSingleValueEvent'は現在の値に対して「即時」起動し、その後リッスンを停止します。私はそれがそれとは違った働きをしたことは今までには見たことがないので、あなたが設定した方法である可能性が最も高いでしょう。共有したコードでは、 'getUser'を呼び出すたびに' onDataChange'が呼び出されます。 –
ボタンが押されたときに呼び出すが、データベースが変更されていないときは呼び出さないでください。どのようなアイデアを実装することができますか? –