좋아요를 누르면 숫자가 38 -> 35 -> 39 -> 37 -> 40 -> 36 이런식으로 변경됨
onClickListener안에 setLikeCount를 같이 넣어주면 클릭할때 숫자를 바꾸고 isLiked의 상태를 collect하고 있기 때문에 isLiked의 상태가 바뀔때 마다 연산을 한번 더하게 돼서 생긴 문제
clLikeBtn.setOnClickListener {
detailViewModel.isLikedToggle(args.feedIdArg)
setLikeCount()
}
private fun setLikeCount() {
viewLifecycleOwner.lifecycleScope.launch {
detailViewModel.isLiked.collect { isLiked ->
val currentLikeCount =
binding.tvFeedDetailLikeCount.text.toString().toIntOrNull() ?: 0
val newCount = if (isLiked) {
currentLikeCount + 1
} else {
currentLikeCount - 1
}
binding.tvFeedDetailLikeCount.text = newCount.toString()
}
}}
해결법 -> setLikeCount()함수를 onClickListener함수 밖으로 빼줘 해결
clLikeBtn.setOnClickListener {
detailViewModel.isLikedToggle(args.feedIdArg)
}
setLikeCount()