【发布时间】:2019-11-24 03:55:45
【问题描述】:
我正在从 firebase 数据库添加和检索图像。上传图片后,它会显示在 recyclerview 的另一个活动中。
添加多个图像时,活动会在循环中不断打开,即取决于添加了多少图像。
我想在成功添加所有图像后立即打开所有活动。
我尝试制作一个将 int a 与 mClipData.getItemCount() 进行比较的逻辑,但它没有提供任何解决方案
请帮我解决这个问题
P.S:给出的代码适用于多张图片
if (data.getClipData() != null) {
ClipData mClipData = data.getClipData();
ArrayList<Uri> mArrayUri = new ArrayList<>();
for (int i = 0; i < mClipData.getItemCount(); i++) {
final ClipData.Item item = mClipData.getItemAt(i);
final Uri mImageUri = item.getUri();
mArrayUri.add(mImageUri);
// Get the cursor
Cursor cursor = getContentResolver().query(mImageUri, filePathColumn, null, null, null);
// Move to first row
cursor.moveToFirst();
final StorageReference profileStorage = uploadStorage.child(mImageUri.getLastPathSegment());
uploadTask = profileStorage.putFile(mImageUri);
final int finalI = i;
uploadTask.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
showMessage(e.toString());
}
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Task<Uri> urlTask = uploadTask.continueWithTask(new Continuation<UploadTask.TaskSnapshot, Task<Uri>>() {
@Override
public Task<Uri> then(@NonNull Task<UploadTask.TaskSnapshot> task) throws Exception {
if (!task.isSuccessful()){
throw task.getException();
}
downloadURL = profileStorage.getDownloadUrl().toString();
return profileStorage.getDownloadUrl();
}
}).addOnCompleteListener(new OnCompleteListener<Uri>() {
@Override
public void onComplete(@NonNull Task<Uri> task) {
if(task.isSuccessful()){
Uri uri = task.getResult();
idRef.child(mImageUri.getLastPathSegment()).setValue(uri.toString());
}
}
}).addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
showMessage("image upload successful ");
// activity opens multiple times check it //
a++;
}
});
}
});
if(a == mClipData.getItemCount()){
Intent intent = new Intent(getApplicationContext(), DisplayImages.class);
startActivity(intent);
}
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
imageEncoded = cursor.getString(columnIndex);
imagesEncodedList.add(imageEncoded);
cursor.close();
}
}
【问题讨论】:
标签: android firebase firebase-storage