firebase 데이터베이스에서 데이터를 가져 오려고합니다.이 메소드는 앱을 입력 할 때 호출되며 OnDataChange를 수신하지 않을 때 호출됩니다. 새로운 이미지를 firebase에 업로드하면 OnDataChange가 호출되고 내가 소개 한 마지막 URL이 표시됩니다. 모든 데이터 URL을 검색하고 싶지만이 방법은 항상 실시간 데이터베이스의 새로운 데이터와 관련이 있다고 생각합니다. 조언 해 주셔서 감사합니다.OnDataChange Firebase Android Listener
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();
}
이것은 내가 정말 경우는 적절한 방법을 모르는이
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:
같은 문제를 해결 내 데이터베이스 구조
spear-e5a6a
user-images
3cAhNM75JdaeojrJ5RSjpBhonu63 // userid
-KjN5Jr31u5lPwubAwEF:
"https://firebasestorage.googleapis.com/v0/b/spe..."
-KjN5Nv0Sk8sC6dqDgrq:
"https://firebasestorage.googleapis.com/v0/b/spe..."
입니다.
가능한 [Java/Android를 사용하여 Firebase ONCE에서 데이터를 읽는 방법?] (http://stackoverflow.com/questions/17904613/how-to-read-data-from-firebase-once-using-java) - 안드로이드) – Nobody