Почему мое условие с оператором if выполняется неправильно. Android

#android #kotlin

#Android #kotlin

Вопрос:

У меня возникли проблемы с сообщением if при удалении некоторых данных из моей корзины.

У меня есть некоторые данные в recyclerview в моем фрагменте корзины, также есть кнопка для удаления всех этих данных из корзины.

Я использовал статус if, чтобы проверить, есть ли данные (продукты) в базе данных или нет.

При нажатии кнопки удаления, если в базе данных есть какие-либо данные, выполняется запрос удаления и удаляются все данные. в противном случае данных нет, поэтому просто выведите сообщение для пользователя: продукта для удаления нет.

Проблема заключается в том, что если statment выполняется и данные успешно удаляются, после этого также выполняется statment else . Как я мог это предотвратить?

Код :

  CartFragment : Fragment ()



   val btnTrashAll: ImageButton = viewitem.findViewById(R.id.trash_icon_cart)

        getAllProductFromCart(btnTrashAll)



  fun getAllProductFromCart(button: ImageButton) {

        val animation: Animation =
            AnimationUtils.loadAnimation(context, R.anim.anim_for_btn_zoom_out)
        button.setOnClickListener {

            button.startAnimation(animation)
            viewmodel.getAllFromCart().observe(this, Observer {

                if (!it.isNullOrEmpty()) {

                   val alert = AlertDialog.Builder(view!!.context)
                        .setMessage("Do you want to delete all ؟")
                        .setPositiveButton("yes") { dialog, which ->

                            viewmodel.deleteAllFromCart()

                            Toast.makeText(
                                view!!.context,
                                "Deleted Successfully .",
                                Toast.LENGTH_SHORT
                            ).show() }
                        .setNegativeButton("No", null)
                       .show()

                } else {

                    Toast.makeText(
                        view!!.context,
                        "There is no Product for delete",
                        Toast.LENGTH_SHORT
                    ).show()


                }


            })


        }

  

Комментарии:

1. viewmodel.getAllFromCart().observe(this, Observer это наблюдение за чем-то, что означает, что код внутри может выполняться несколько раз.

2. все в порядке, вы можете опубликовать свой собственный ответ или просто удалить свой вопрос 🙂