我已经了解到使用全局静态变量并不是一个好的工程, 所以我试着总是返回我需要的值或对象。 在这种情况下,当所有数据最终同步时,如何返回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);
}
});
我对某些过程有误吗?