override fun onBindViewHolder(holder: UserHomeItemViewHolder, position: Int) {
val item = getItem(position)
if (item != null) {
getEmoji(item.number)
holder.bind(
item, userViewModel.getEmojiData.value
)
if (holder.bindingAdapterPosition != RecyclerView.NO_POSITION) {
holder.binding.goodEmoji.setOnClickListener {
Log.d("TAG", "onBindViewHolder: good")
listener?.onGoodItemClick(item, holder.binding.goodEmoji)
CoroutineScope(IO).launch {
updateEmojiStatus(number = item.number)
}
}
holder.binding.sadEmoji.setOnClickListener {
Log.d("TAG", "onBindViewHolder: sad")
listener?.onSadItemClick(item, holder.binding.sadEmoji)
CoroutineScope(IO).launch {
updateEmojiStatus(number = item.number)
}
}
}
insertEmojiStatus(item.number)
holder.binding.declarationBtn.setOnClickListener {
val direction: NavDirections =
UserMainFragmentDirections.actionUserMainFragmentToDeclarationFragment(item.id)
it.findNavController().navigate(direction)
}
}
}
private suspend fun updateEmojiStatus(number: Int) {
CoroutineScope(IO).launch {
Log.d(
"adapter",
"insertEmojiStatus: update sad : ${userViewModel.sadStatus.value.toString()} good :${userViewModel.goodStatus.value.toString()}"
)
localViewModel.updatePostStatus(
PostStatus(
userViewModel.sadStatus.value,
userViewModel.goodStatus.value, number
)
)
}
}
private fun insertEmojiStatus(number: Int) {
CoroutineScope(IO).launch {
Log.d(
"adapter",
"insertEmojiStatus: sad : ${userViewModel.sadStatus.value.toString()} good :${userViewModel.goodStatus.value.toString()}"
)
localViewModel.insertPostStatus(
postStatus = PostStatus(
userViewModel.sadStatus.value,
userViewModel.goodStatus.value,
number
)
)
}
}
private fun getEmoji(num: Int) {
CoroutineScope(IO).launch {
userViewModel.getEmoji(signInViewModel.token.value.toString(), num)
}
}
class UserHomeItemViewHolder(val binding: UserPostRecyclerItemBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(data: UserPostDTO, emoji: GetEmoji?) {
binding.data = data
binding.emoji = emoji
binding.executePendingBindings()
}
}