Java 正在尝试更新多个图像。如果我更新了单个图像,但更新了两个或多个图像,下面的代码可以正常工作
如果我尝试在数组的帮助下执行此操作,那么它将更新Firestore中的所有字段,并且我只想更新特定字段。我尝试过很多事情,但都没能达到我想要的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 =
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();
}
}
});
}]]]]