首页 > 解决方案 > 滑动期间无法更新 ViewPager 中的菜单项状态

问题描述

我的菜单中有最喜欢的图标,而ViewPager. 当我单击项目时,它会改变。但是当我刷卡时,它不记得项目的状态。

我已经实施setOnPageChangeListeneronPageSelected检查了项目的状态并更改了可绘制对象。

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
        }

标签: androidkotlinandroid-viewpagerandroidimageslider

解决方案


您可能需要在更改图标后调用invalidateOptionsMenu() 。


推荐阅读