У меня есть любимая иконка в моем меню и 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
}