1
您好我正在开发一个使用Firebase的Android应用程序,我试图从firebase onchange方法中获取数据时遇到问题它一直返回空方法,如果数据只在方法内可用,外部为空。 为了更明确一些,我有一个数据数组,包含一些名称和一个url引用的firebase存储中的图片,所以我得到的数组,我把数据放在textviews等(所有这一切发生在onchange原因外部数据是空),当我想要下载图片时,我需要使用另一个firebase方法,当我这样做时,我得到这个错误,我认为这是因为有一个异步方法在另一个错误说有关最大线程达到128什么的东西这样,这里的代码从Firebase OnChange方法获取数据
ideasListFireRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
HashMap<String, HashMap> ideasList = (HashMap<String, HashMap>) dataSnapshot.getValue();//getting list
idsList = new ArrayList<>(ideasListFire.keySet()); //list of IDs of picture to get from firebase storage //method to get pictures from firebase storage
imagesTab = new HashMap<>();
while (i < idsList.size()) {
final long ONE_MEGABYTE = 1024 * 1024;
StorageReference storageRef = FirebaseStorage.getInstance().getReferenceFromUrl(ideasListFire.get(idsList.get(i)).get("mainPic").toString());
storageRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
@Override
public void onSuccess(byte[] bytes) {
// Got the download URL for 'users/me/profile.png'
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
imagesTab.put(idsList.get(i), bmp);
// testim.setImageBitmap(bmp);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
// Handle any errors
}
});
这段代码给我线程问题 和其他代码,其中方法分离的错误给出的ID列表为空导致idsList是空出来的onDataChange方法的非常感谢您的帮助和原谅我的英语错误=)