Android Uygulamamda firebase'ten veri almak için uğraşıyordum, birden fazla çocuk düğümüne sahip olan bir düğümü nasıl alacağımı anlayamıyorum. Bir ana POJO'daki POJO'nun Arraylist'ini geri alma Firebase'den
durum
ben Firebase bir düğüme sahip bir çocuk düğüm 'sever' sahiptir 'oturana' olmasıdır. Bir kullanıcı bir fotoğraf yüklediğinde ve bir kullanıcı bir fotoğrafı beğendiğinde "beğen" düğümü oluşturulduğunda 'snaps' düğümü oluşturulur. Fotoğraf her sevildiğinde, bir "beğendi" anahtar-değer çifti snaps ' düğümüne itilir.Amaç:
Firebase ref = new Firebase(Constants.FIREBASE_URL+"snaps/");
Query queryRef = ref.orderByChild("timestamp");
queryRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot snapshot, String previousChild) {
Snap snap = snapshot.getValue(Snap.class);
snapsList.add(snap);
}
});
: bir çırpıda ve tüm çocuk retreive için almak için POJOs
Benim başarısız girişimi kullanarak Beğeni ikinci snap içermez , henüz beğenilmediği için düğümünü beğendi.
Snaps' POJO
public class Snap {
private String uid="";
private String uname="";
private String timestamp="";
private String pname="";
private String place="";
private String image="";
private String desc="";
private String likes="";
public Snap() {
}
public Snap(String uid, String uname, String timestamp, String pname, String place, String image, String desc) {
this.uid = uid;
this.uname = uname;
this.timestamp = timestamp;
this.pname = pname;
this.place = place;
this.image = image;
this.desc = desc;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getTimestamp() {
return timestamp;
}
public void setTimestamp(String timestamp) {
this.timestamp = timestamp;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
** Veri JSON **
{
"snaps" : {
"-KDJ0yinIYo-gKpVp13w" : {
"desc" : "a",
"image" : "...",
"likes" : {
"-KDJ11Bbbc_d1S2hU2Zk" : {
"liked_by" : "b64ff43c-7b51-40d1-aac8-6e7c700113e2"
}
},
"place" : "a",
"pname" : "a",
"timestamp" : "1458477456134",
"uid" : "b64ff43c-7b51-40d1-aac8-6e7c700113e2",
"uname" : "Dead Man"
},
"-KDJ19tOlJ8-W28k5YAD" : {
"desc" : "b",
"image" : "...",
"place" : "b",
"pname" : "b",
"timestamp" : "1458477506628",
"uid" : "b64ff43c-7b51-40d1-aac8-6e7c700113e2",
"uname" : "Dead Man"
}
},
"users" : {
"b64ff43c-7b51-40d1-aac8-6e7c700113e2" : {
"email" : "[email protected]",
"full_name" : "Dead Man",
"image" : "...",
"provider" : "password"
}
}
}
Lütfen sorunuzu Firebase yapınızın bir resminin yerine metin sürümüyle güncelleyin. Firebase kontrol panelinizdeki Dışa Aktar düğmesini kullanarak metni alabilirsiniz. Sorunuzdaki metne sahip olmak, onu arama yapabilmenin yanı sıra, yanıt verirken yeniden yazmamıza engel oluyor. – Jay
Birkaç şey: snaps düğümünde/no'lu/düğümlü olmayan çocuk düğümleri vardır, bu yüzden yapıya sahip birden çok alt yapı:/snaps/id/likes. İkincisi, bir düğümü geri almanın her zaman, düğüm içindeki tüm çocukları alacağıdır, bu yüzden ne sorduğunuzu açıklığa kavuşturmaz;/düğümlerindeki tüm düğümleri almak ister misiniz? ya da belirli bir? Muhtemelen cevabı burada bulabilirsiniz [Firebase Data Elde Etme] (https://www.firebase.com/docs/android/guide/retrieving-data.html) ya da en azından sorunun düzeltilmesi için yardım. – Jay
@Jay, json'u ekledim ve evet,/snaps içindeki tüm düğümleri almayı planlıyorum ama POJO'nun nasıl olması gerektiğini anlayamıyorum. –