gpt4 book ai didi

android - OnDataChange Firebase 安卓监听器

转载 作者:行者123 更新时间:2023-11-29 01:10:01 34 4
gpt4 key购买 nike

我正在尝试从 firebase 数据库检索数据,当您进入应用程序并且从不监听 OnDataChange 时调用此方法。如果我将新图像上传到 firebase,则会调用 OnDataChange 并显示我引入的最后一个 url。我想检索所有数据 url,但我认为无论实时数据库中是否有新数据,总是会调用此方法。谢谢你的建议。

    private void prepareAlbums() {

// storageReference = FirebaseStorage.getInstance().getReference().child("Images").child(FirebaseAuth.getInstance().getCurrentUser().toString());

System.out.print("user "+ firebaseAuth.getCurrentUser().getUid());
databaseReference.getRoot().child("user-images")
.child(firebaseAuth.getCurrentUser().getUid())
.addValueEventListener(new ValueEventListener() {
@Override public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, Object> td = (HashMap<String, Object>) dataSnapshot.getValue();
if (td != null) {
Iterator iterator = td.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
String url = (String) entry.getValue();
System.out.print("url "+ url);
urlArray.add(url);
}
}
}

@Override public void onCancelled(DatabaseError databaseError) {

}
});

CardImage a;
for (String s : urlArray) {
a = new CardImage("usuario1", 3, s, "madrid");
albumList.adenter code hered(a);
}

adapter.notifyDataSetChanged();
}

这是我的数据库结构

spear-e5a6a
user-images
3cAhNM75JdaeojrJ5RSjpBhonu63 // userid
-KjN5Jr31u5lPwubAwEF:
"https://firebasestorage.googleapis.com/v0/b/spe..."
-KjN5Nv0Sk8sC6dqDgrq:
"https://firebasestorage.googleapis.com/v0/b/spe..."

我是这样解决问题的

databaseReference.getRoot().child("images")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
imageArray.clear();
cardList.clear();
for (DataSnapshot imageSnapshot : dataSnapshot.getChildren()) {
Log.d(TAG, "onDataChange: " + imageSnapshot.getKey());
ImageInfo image = imageSnapshot.getValue(ImageInfo.class);
imageArray.add(image);

}
render(imageArray);

}

@Override
public void onCancelled(DatabaseError databaseError) {

}

});


private void render(ArrayList<ImageInfo> imgInfo) {
final ArrayList<UserInfo> userArray = new ArrayList<>();


CardImage card;
for (ImageInfo imageInfo : imgInfo) {
card = new CardImage(imageInfo.getName(), imageInfo.getRating(), imageInfo.getUrl(), imageInfo.getProvince(), imageInfo.getTimeStamp());
cardList.add(card);
}


adapter.notifyDataSetChanged();

}

images
1494101684644: //timestamp
1494101402668
comentary:
name:
province:
rating:
timeStamp:
url:
usermail:
voted:
users
//user id YMlB6t3Yp1Rs2mcpc9MstUSVD5z2:
email:
images
1494101402668: timestamp
1494101684644:
name:

我真的不知道这样做是否正确。

最佳答案

onDataChange() 方法中添加 urlArray 的声明。否则为 null,因为此方法是异步执行的。

其他方法请访问此post还有这个post .

希望对您有所帮助。

关于android - OnDataChange Firebase 安卓监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43803365/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com