Код для использования childEventListener
выглядит следующим образом:
DatabaseReference TUidRef = usersRef.child(td);
Log.i("hello",td);
TUidRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
ms = dataSnapshot.child("rec_msg").getValue(String.class);
fUid = dataSnapshot.child("fromUID").getValue(String.class);
st = dataSnapshot.child("rec_secret").getValue(String.class);
int km = 0;
try {
km = Integer.parseInt(st);
}
catch (NumberFormatException e) {
Log.d("NumberError:", "Can't convert");
}
if(ms!=null && !ms.equals(""))
addMessageBox(ms,km);
else
Toast.makeText(Main5Activity.this,"Something went wrong",Toast.LENGTH_SHORT).show();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
ms = dataSnapshot.child("rec_msg").getValue(String.class);
fUid = dataSnapshot.child("fromUID").getValue(String.class);
st = dataSnapshot.child("rec_secret").getValue(String.class);
int km = 0;
try {
km = Integer.parseInt(st);
}
catch (NumberFormatException e) {
Log.d("NumberError:", "Can't convert");
}
if(ms!=null && !ms.equals(""))
addMessageBox(ms,km);
else
Toast.makeText(Main5Activity.this,"Something went wrong",Toast.LENGTH_SHORT).show();
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
if(mAuth.getUid().equals(fUid))
Toast.makeText(Main5Activity.this,"You left the conversation", Toast.LENGTH_SHORT).show();
else
Toast.makeText(Main5Activity.this,"User left the conversation", Toast.LENGTH_SHORT).show();
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
usersRef
определяется как:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
final DatabaseReference usersRef = rootRef.child("users");
Странно то, что он работает, когда я присоединяю childEventListener
к usersRef
, но логически мне нужно слушать изменения, относящиеся только к переменной td
.
Значение td
- это uid
ребенка, которого необходимо выслушать.
База данных выглядит так: