Я создаю приложение для знакомств и создал узел пользователей, в профиле которого пользователь может обновить свой профиль, добавив дополнительные свойства и обновив свой профиль .. но каждый раз, когда пользователь обновляет свой профиль .. его старые изображения будут удалены, и будут добавлены новые .. Я уверен, что с моей структурой данных в firebase что-то не так, и поэтому он продолжает удалять старые изображения и писать новые. Как я могу заставить пользователя обновить другие свойства его или ее .. но изображения должны только добавляться и не удалять старые изображения и добавлять новые ..
вот мой код для профиля actvity
private var mPhotos: ArrayList = ArrayList ()
var up: Int = 0
var k: Int = 0
когда {
profName!!.text.toString() == "" ->
Toast.makeText(this, "Please write your name", Toast.LENGTH_LONG).show()
profGender!!.text.toString() == "" ->
Toast.makeText(this, "Please specify your gender", Toast.LENGTH_LONG).show()
profAge!!.text.toString() == "" ->
Toast.makeText(this, "Please specify your age", Toast.LENGTH_LONG).show()
else -> {
val progressDialog = ProgressDialog(this)
progressDialog.setTitle("Updating profile")
progressDialog.setMessage("Please wait, while we update your profile...")
progressDialog.setCanceledOnTouchOutside(false)
progressDialog.show()
var uploadTask: StorageTask<UploadTask.TaskSnapshot>
while (up < uploadedImages.size) {
val itemRef: StorageReference = storageProfilePicRef!!.child(firebaseUser.uid)
.child(uploadedImages[k].lastPathSegment!!)
uploadTask = itemRef.putFile(uploadedImages[k])
.addOnSuccessListener { p0 ->
val downloadUrl =
p0!!.storage.downloadUrl
}.addOnFailureListener {
progressDialog.dismiss()
}
up++
k++
uploadTask.continueWithTask(Continuation<UploadTask.TaskSnapshot, Task<Uri>> { task ->
if (!task.isSuccessful) {
task.exception?.let {
throw it
progressDialog.dismiss()
}
}
return@Continuation itemRef.downloadUrl
}).addOnCompleteListener (OnCompleteListener { task ->
if (task.isSuccessful) {
downloadImages = ArrayList()
(downloadImages as ArrayList<Uri>).clear()
val downloadUrl = task.result
(downloadImages as ArrayList<Uri>).add(downloadUrl!!)
}
for (element in downloadImages) {
mPhotos.add(element.toString())
}
val usersRef = FirebaseDatabase.getInstance().reference.child("Users")
val userMap = HashMap<String, Any>()
userMap["datingfor"] = datingfor!!.text.toString()
userMap["maritalstatus"] = maritalstatus!!.text.toString()
userMap["personalcar"] = caravailability!!.text.toString()
userMap["children"] = children!!.text.toString()
userMap["state"] = mState
userMap["city"] = mCity
userMap["income"] = income!!.text.toString()
userMap["accommodation"] = accommodation!!.text.toString()
userMap["materialsupport"] = materialsupport!!.text.toString()
userMap["drinking"] = drinking!!.text.toString()
userMap["smoking"] = smoking!!.text.toString()
userMap["height"] = heightt!!.text.toString()
userMap["weight"] = weight!!.text.toString()
userMap["bodytype"] = body!!.text.toString()
userMap["knowlanguages"] = knowlang!!.text.toString()
userMap["haircolor"] = haircolor!!.text.toString()
userMap["eyecolor"] = eyecolor!!.text.toString()
userMap["sexorientation"] = sexorientation!!.text.toString()
userMap["tattoo"] = tattoo!!.text.toString()
userMap["name"] = profName!!.text.toString()
userMap["bio"] = profAbout!!.text.toString()
userMap["dob"] = profAge!!.text.toString()
userMap["lookingfor"] = profLooking!!.text.toString()
userMap["gender"] = profGender!!.text.toString()
userMap["images"] = mPhotos------- // these are the images
usersRef.child(firebaseUser.uid).updateChildren(userMap)
.addOnCompleteListener(OnCompleteListener<Void> { task ->
Toast.makeText(
this, "Account Information has been updated successfully!",
Toast.LENGTH_LONG
).show()
val intent = Intent(this, HomeActivity::class.java)
startActivity(intent)
finish()
})
})
}
}
}