Как я могу получить доступ к случайному идентификатору документов, чтобы прикрепить его, включая поля документов? - PullRequest
0 голосов
/ 07 сентября 2018

введите описание изображения здесь

У меня есть RecyclerView, показывающий много фотографий из разных коллекций. Я просто хочу, чтобы когда пользователь longclick мог редактировать или удалять, я получил ссылку на фотографию из Firesbase Storage и прикрепил к ней uid. Так что если uid в документе == текущий пользовательский uid он мог удалить или отредактировать. проблема в том, что я не могу найти путь к фотографии, так как он получен из другой коллекции !! не могли бы вы помочь мне, пожалуйста?

Котлин

class ViewHolder(view: View, var my_data: Data? = null) : RecyclerView.ViewHolder(view) {
        init {
            view.setOnClickListener {
                val intent = Intent(view.context, More::class.java)
                intent.putExtra("description", my_data?.description)
                intent.putExtra("photo", my_data?.photo_uri)
                intent.putExtra("site", my_data?.site)
                view.context.startActivity(intent)
            }

            view.setOnLongClickListener {
                val popUp = PopupMenu(view.context, it)
                popUp.inflate(R.menu.edit_delete)
                popUp.setOnMenuItemClickListener { item ->
                    when (item.itemId) {
                        R.id.edit -> {
                            true
                        }
                        R.id.delete -> {

                            var dp: FirebaseFirestore = FirebaseFirestore.getInstance()
                            dp.collection("Fraise")
                                    .document()
                                    .delete()
                                    .addOnCompleteListener {
                                    }
                            Toast.makeText(view.context, "Note has been deleted!", Toast.LENGTH_SHORT).show()
                            true
                        }
                        else -> false  }
                popUp.show(); true
            }

1 Ответ

0 голосов
/ 08 сентября 2018

Предполагая, что вы сохранили свою структуру базы данных от другого вопроса , где я предоставил вам ответ, а вы используете класс модели с именем Fraise, чтобы удалить / отредактировать фотографию от определенного пользователя, пожалуйста, используйте следующий код:

val uid = FirebaseAuth.getInstance().currentUser!!.uid
val rootRef = FirebaseFirestore.getInstance()
val query = rootRef.collection("Fraise").whereEqualTo("uid", uid)
query.get().addOnCompleteListener(OnCompleteListener<QuerySnapshot> { task ->
    if (task.isSuccessful) {
        for (document in task.result) {
            val fraise = document.toObject(Fraise::class.java!!)
            fraise!!.setPhoto_url(new_photo_uri)
            rootRef.collection("Fraise").document(document.id).set(fraise)
        }
    }
})

Если у вас нет класса модели, вы можете выполнить обновление, используя Map, например:

val uid = FirebaseAuth.getInstance().currentUser!!.uid
val rootRef = FirebaseFirestore.getInstance()
val query = rootRef.collection("Fraise").whereEqualTo("uid", uid)
query.get().addOnCompleteListener(OnCompleteListener<QuerySnapshot> { task ->
    if (task.isSuccessful) {
        for (document in task.result) {
            val new_photo_uri = HashMap<String, Any>()
            new_photo_uri["photo_uri"] = new_photo_uri
            rootRef.collection("Fraise").document(document.id).set(new_photo_uri, SetOptions.merge())
        }
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...