循环访问从FirebaseDatabase获取的字符串。如何?

时间:2016-07-02 18:02:31

标签: android firebase firebase-realtime-database

我在firebase中获取了一些字符串,这些字符串都保存在标记'imageUID'下,并使用此imageUID来显示图像。

以下是我如何获取它:

databaseReference.addChildEventListener(new ChildEventListener() {
  @Override
  public void onChildAdded(DataSnapshot dataSnapshot, String s) {
    Map<String, String> newRequest = (Map<String, String>) dataSnapshot.getValue();
    imageUID = newRequest.get("imageUID");

  }

  @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(DatabaseError databaseError) {

  }
});

这就是我使用上面提取的imageUID来展示图片的方式:

private void doSomethingWithPicasso(String imageUIDh, ImageView target){
        Picasso.with(getBaseContext())
                .load(imageUIDh)
                .error(R.drawable.ic_warning_black_24dp)
                .into(target, new Callback() {
                    @Override
                    public void onSuccess() {
                        progressBar.setVisibility(View.INVISIBLE);
                    }

                    @Override
                    public void onError() {
                        Toast.makeText(getBaseContext(), "Error occurred while loading images. Please retry.", Toast.LENGTH_SHORT).show();
                    }
                });
    }

我想在我的应用程序中使用从数据库中获取的imagesUIDs显示每个显示的图像,但是发生的事情只是最后一个imageUID用于显示图像而不是所有图像。

我正在考虑循环遍历此字符串并逐个使用每个字符串来显示图像,但我不知道该怎么做!有没有更好的方法来实现这个目标?

1 个答案:

答案 0 :(得分:1)

你可以从这个尝试获得一些帮助

 firebase.child("key").addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot innerDataSanpShot : dataSnapshot.getChildren()) {
          //DataSnapshot of inner Childerns
          String username = innerDataSnapShot.child("username").getValue().toString();
         } 
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});