TIL #111

loci·2024년 9월 5일
0

TIL

목록 보기
102/111

like 카운트가 이상하게 올라가는 문제

좋아요를 누르면 숫자가 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()
profile
편리한 개발자

0개의 댓글