Я создаю приложение для обмена сообщениями в Android и пытаюсь получить данные из Firebase в моем приложении для Android. Но когда я это делаю, я получаю полное дерево на моем экране. Я хочу получить доступ к ребенку напрямую. Есть ли способ получить только то значение, которое я хочу?
retr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Attach an listener to read the data at our posts reference
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
totalmsg[0] =snapshot.getValue().toString();
emultiview.setText(totalmsg[0].toString());
}
@Override
public void onCancelled(FirebaseError firebaseError) {
System.out.println("The read failed: " + firebaseError.getMessage());
}
});
}
});
Я хочу получить привет от этого в Firebase. Проблема, с которой я здесь сталкиваюсь — это шифрование данных. Есть ли способ, которым я могу получить это? И я не могу добавлять данные без использования push (), есть ли другая альтернатива push ()?
{
"chat" : {
"-JZvOzp0L1ccuBt2TVN7" : {
"author" : "JavaUser21221",
"message" : "hello "},
"-JZvPneW5et0_EVRvL5g" : {
"author" : "JavaUser21221",
"message" : "hai"}
}
r.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
Map<String,Object> newPost=(Map<String,Object>)snapshot.getValue();
String name1 = String.valueOf(newPost.get("Author"));
String message1 = String.valueOf(newPost.get("Title"));System.out.println("Message: " + newPost.get("Author"));
System.out.println("Name: " + newPost.get("Title"));
}
});
Предположим, у вас есть структура followig в вашей базе данных Firebase:
users:{ uid:[userid]
name:[username]
}
Student:{ rollno:[rollno]
name:[studendname]
}
Затем для доступа к дочернему пользователю вы можете использовать URL ref.child('users/'+userid).addValueEventListener(...
,
Это окончательный ответ, который я нашел
ref1.addChildEventListener(new ChildEventListener() {
// Retrieve new posts as they are added to Firebase
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
Map<String,Object> newPost=(Map<String,Object>)snapshot.getValue();
String name1 = String.valueOf(newPost.get("Name"));
String message1 = String.valueOf(newPost.get("Message"));
System.out.println("---------------- full data ---------------------");
System.out.println("Message: " + newPost.get("Message"));
System.out.println("Name: " + newPost.get("Name"));
System.out.println("----------------- end of full data --------------------");
if(name1.equals("CCCCC"))
{
System.out.println("---------------- conditioned data ---------------------");
System.out.println("Message: " + newPost.get("Message"));
System.out.println("Name: " + newPost.get("Name"));
System.out.println("----------------- end of conditioned data --------------------");
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
});