firebase,如何在数据获取时从内部类中返回一个值

时间:2018-01-30 11:31:00

标签: java android firebase-realtime-database

我已经了解到使用全局静态变量并不是一个好的工程, 所以我试着总是返回我需要的值或对象。 在这种情况下,当所有数据最终同步时,如何返回arraylist?

这是我的代码:

public List<String> getList() {

DatabaseReference dbRefList = fireDB.getReference("database/list");
dbRefList.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {

    List<String> name = new ArrayList<>();
    for (DataSnapshot ds : dataSnapshot.getChildren()) {
      String name = ds.child("name").getValue().toString();
      versionName.add(name);
    }
    dataSnapshot.child("name").getValue().toString();
    //want to return the list
  }

  @Override
  public void onCancelled(DatabaseError databaseError) { }
});
}

修改

这是我使用CallBack的关注问题: 下面的代码我得到回调的空值

public void downloadImagesFromFireStorage(String imgName, final BitmapCallBackInterface bitmapCallBackInterface) {

StorageReference storageRef = FirebaseStorage.getInstance()
        .getReferenceFromUrl("gs://xxxxx.appspot.com").child("imgs").child(imgName + ".png");

final long ONE_MEGABYTE = 1024 * 1024;

storageRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {

  @Override
  public void onSuccess(byte[] bytes) {
    Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
    bitmapCallBackInterface.onCallBack(bitmap);
  }
});

当我打电话

downloadImagesFromFireStorage(imgName, new BitmapCallBackInterface() {
      @Override
      public void onCallBack(Bitmap bitmap) {
        insertImg(couponName, bitmap);
      }
    });
我对某些过程有误吗?

1 个答案:

答案 0 :(得分:0)

尝试使用EventBus。查看link