Java 正在尝试更新多个图像。如果我更新了单个图像,但更新了两个或多个图像,下面的代码可以正常工作

Java 正在尝试更新多个图像。如果我更新了单个图像,但更新了两个或多个图像,下面的代码可以正常工作,java,android,firebase,google-cloud-firestore,Java,Android,Firebase,Google Cloud Firestore,如果我尝试在数组的帮助下执行此操作,那么它将更新Firestore中的所有字段,并且我只想更新特定字段。我尝试过很多事情,但都没能达到我想要的 save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { progressBar.setVisibility(View.VISIBLE); i =

如果我尝试在数组的帮助下执行此操作,那么它将更新Firestore中的所有字段,并且我只想更新特定字段。我尝试过很多事情,但都没能达到我想要的

save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            progressBar.setVisibility(View.VISIBLE);
             i =0;

            HashMap<Integer,String> downloadurii = new HashMap<>();

            if(numap.size()!=0){
                for (  i=1;i<=3;i++){
                    if (numap.containsKey(i)){
                         StorageReference fileRefernces = storageReference.child(System.currentTimeMillis()
                                + "." + getFileExtension(Uri.parse(numap.get(i))));



                        fileRefernces.putFile(Uri.parse(numap.get(i))).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                fileRefernces .getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                                    @Override
                                    public void onSuccess(Uri uri) {

                                        String url = uri.toString();
                                        //downloadurii.put(i,url);

                                        if(i == 1)
                                        {
                                            HashMap<String,Object> keymap = new HashMap<>();
                                            keymap.put("image1",url);
                                            firebaseFirestore.collection("users").document(userid).collection("update").document(userid)
                                                    .update(keymap).addOnCompleteListener(new OnCompleteListener<Void>() {
                                                @Override
                                                public void onComplete(@NonNull Task<Void> task) {
                                                    if(task.isSuccessful()){

                                                        progressBar.setVisibility(View.GONE);
                                                        Toast.makeText(getContext(),"Success",Toast.LENGTH_SHORT).show();


                                                    }else {
                                                        progressBar.setVisibility(View.GONE);
                                                        Toast.makeText(getContext(), "Error"+task.getException(), Toast.LENGTH_SHORT).show();

                                                    }

                                                }
                                            });
                                        }else if(i == 2)
                                        {
                                            HashMap<String,Object> keymap = new HashMap<>();
                                            keymap.put("image2",url);
                                            firebaseFirestore.collection("users").document(userid).collection("update").document(userid)
                                                    .update(keymap).addOnCompleteListener(new OnCompleteListener<Void>() {
                                                @Override
                                                public void onComplete(@NonNull Task<Void> task) {
                                                    if(task.isSuccessful()){

                                                        progressBar.setVisibility(View.GONE);
                                                        Toast.makeText(getContext(),"Success",Toast.LENGTH_SHORT).show();


                                                    }else {
                                                        progressBar.setVisibility(View.GONE);
                                                        Toast.makeText(getContext(), "Error"+task.getException(), Toast.LENGTH_SHORT).show();

                                                    }

                                                }
                                            });
                                        }else if (i == 3)
                                        {
                                            HashMap<String,Object> keymap = new HashMap<>();
                                            keymap.put("image3",url);
                                            firebaseFirestore.collection("users").document(userid).collection("update").document(userid)
                                                    .update(keymap).addOnCompleteListener(new OnCompleteListener<Void>() {
                                                @Override
                                                public void onComplete(@NonNull Task<Void> task) {
                                                    if(task.isSuccessful()){

                                                        progressBar.setVisibility(View.GONE);
                                                        Toast.makeText(getContext(),"Success",Toast.LENGTH_SHORT).show();


                                                    }else {
[public void onActivityResult(int-requestCode,int-resultCode,@Nullable-Intent-data){super.onActivityResult(requestCode,resultCode,data);
if(requestCode==1&&resultCode==Activity.RESULT\u OK&&data!=null){
imageuriOne=data.getData();
setImageURI(imageuriOne);
numap.put(1,“+imageuriOne);
}
}
私有void uploadstoarge(){
progressBar.setVisibility(View.VISIBLE);
HashMap downloadurii=新HashMap();
如果(numap.size()!=0){

对于(int i=1;itry with Reformation其较不复杂且易于使用,用于此目的的代码中到底有什么不符合您的预期?告诉我们共享代码有什么问题。您有任何错误吗?它没有给出任何错误,它将新图像上载到存储中,但在我尝试更新多个图像时,它不会在Firestore中保存链接,但它不会当我只运行单个图像的代码时,rks很好。我只想更新图像字段。例如,有五个不同的图像持有者,如果用户第一次只更新两个图像,然后再次来删除其中一个旧图像,并使用新图像更新/添加它,并且能够在图像用户未删除的情况下继续,请尝试ng来实现这一点,如果我尝试借助Array来实现这一点,那么它会更新所有字段,并再次从零开始删除旧图像。我仍然不了解您的实际使用情况。您是否有一些图像保存在云存储中,它们的url引用保存在Firestore中,并且您希望在Firestore中更新这些引用当一张新图片上传时?我有三张图片要上传,所以我根据这张图片做了一个循环,剩下的是用户选择是一次上传一张还是三张,然后点击名为uploadstorage()方法的按钮。
                                                    }
                                                }
                                            });
                                        }
                                    }
                                });
                            }
                        });
                    }
                }
            }
        }
    });
        
 [[[[[public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);
 if (requestCode == 1 && resultCode == Activity.RESULT_OK && data != null) {
 imageuriOne = data.getData();
  dpOne.setImageURI(imageuriOne);
        numap.put(1,""+imageuriOne);

 }
}
 private void uploadstoarge(){
    progressBar.setVisibility(View.VISIBLE);
    HashMap<Integer,String> downloadurii = new HashMap<>();
    if(numap.size()!=0){
        for ( int i=1;i<=3;i++){
            if (numap.containsKey(i) == true){
                int j = i;
                StorageReference fileRefernces = storageReference.child(System.currentTimeMillis()
                        + "." + getFileExtension(Uri.parse(numap.get(i))));

                fileRefernces.putFile(Uri.parse(numap.get(i))).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        fileRefernces .getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                            @Override
                            public void onSuccess(Uri uri) {

                                String url = uri.toString();
                                uploadfirestore(j,url);


                                progressBar.setVisibility(View.GONE);

                            }
                        });
                    }
                });
            }else{
                continue;
            }

        }
    }

}

private  void uploadfirestore(int i,String url) {
    HashMap<String,Object> keymap = new HashMap<>();
    keymap.put("image"+i,url);
  
  firebaseFirestore.collection("users").document(userid).collection("update").document(userid)
            .update(keymap).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {
            if(task.isSuccessful()){
                progressBar.setVisibility(View.GONE);
                Toast.makeText(getContext(),"Success",Toast.LENGTH_SHORT).show();
            }else {
                progressBar.setVisibility(View.GONE);
                Toast.makeText(getContext(), "Error"+task.getException(), Toast.LENGTH_SHORT).show();
            }

        }
    });
}]]]]