Не удается обновить состояние элемента меню в ViewPager во время считывания - PullRequest
0 голосов
/ 12 октября 2019

У меня есть любимая иконка в моем меню и ViewPager. Когда я нажимаю на элемент, он меняется. Но когда я смахиваю, он не запоминает состояние элемента.

Я реализовал setOnPageChangeListener и в onPageSelected проверил состояние элемента и изменил параметры рисования.

override fun onPageSelected(position: Int) {

                currentPage = position
                if (imageModelArrayList!![currentPage].isFavourite == true) {
                    isExistInFavorite = true

                    menuItem?.icon =
                        ContextCompat.getDrawable(
                            applicationContext,
                            R.drawable.ic_favorite_black_24dp
                        )

                   helper.updateGreetingByID(true, id)

                } else {
                    isExistInFavorite = false
                    menuItem?.icon =
                        ContextCompat.getDrawable(
                            applicationContext,
                            R.drawable.ic_favorite_border_black_24dp
                        )
                    helper.updateGreetingByID(false, id)
                }

            }

Вот элемент клик

R.id.action_favorite -> {

            if (!isExistInFavorite) {
                greetingModel.id?.let { helper.updateGreetingByID(true, id) }
                menuItem?.icon =
                    ContextCompat.getDrawable(this, R.drawable.ic_favorite_black_24dp)
                Toast.makeText(
                    this@ImageDetailActivity,
                    "Favourite added",
                    Toast.LENGTH_SHORT
                ).show()
                isExistInFavorite = true

            } else {
                isExistInFavorite = false
                menuItem?.icon =
                    ContextCompat.getDrawable(this, R.drawable.ic_favorite_border_black_24dp)
                Toast.makeText(
                    this@ImageDetailActivity,
                    "favourite deleted",
                    Toast.LENGTH_SHORT
                ).show()
                greetingModel.id?.let { helper.updateGreetingByID(false, id) }
            }

            return true
        }

1 Ответ

0 голосов
/ 12 октября 2019

Вам может потребоваться вызвать invalidateOptionsMenu () после изменения значка.

...