feat(content): 추천 댓글 오디오 어댑터를 추가한다

This commit is contained in:
2026-06-23 17:18:05 +09:00
parent cd323c3f69
commit 55255621e3
2 changed files with 134 additions and 0 deletions
@@ -0,0 +1,61 @@
package kr.co.vividnext.sodalive.v2.main.content.ui
import android.graphics.Outline
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.ViewOutlineProvider
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.databinding.ItemContentCommentedAudioBinding
import kr.co.vividnext.sodalive.extensions.loadUrl
import kr.co.vividnext.sodalive.v2.main.content.model.ContentCommentedAudioUiModel
class ContentCommentedAudioAdapter(
private val onAudioClick: (ContentCommentedAudioUiModel) -> Unit = {}
) : RecyclerView.Adapter<ContentCommentedAudioAdapter.ViewHolder>() {
private var items: List<ContentCommentedAudioUiModel> = emptyList()
fun submitItems(items: List<ContentCommentedAudioUiModel>) {
this.items = items
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(
ItemContentCommentedAudioBinding.inflate(LayoutInflater.from(parent.context), parent, false),
onAudioClick
)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(items[position])
}
override fun getItemCount(): Int = items.size
class ViewHolder(
private val binding: ItemContentCommentedAudioBinding,
private val onAudioClick: (ContentCommentedAudioUiModel) -> Unit
) : RecyclerView.ViewHolder(binding.root) {
init {
binding.layoutContentCommentedThumbnail.clipToOutline = true
binding.layoutContentCommentedThumbnail.outlineProvider = object : ViewOutlineProvider() {
override fun getOutline(view: View, outline: Outline) {
outline.setRoundRect(0, 0, view.width, view.height, view.resources.getDimension(R.dimen.radius_14))
}
}
}
fun bind(item: ContentCommentedAudioUiModel) = with(binding) {
ivContentCommentedThumbnail.loadUrl(item.imageUrl)
tvContentCommentedTitle.text = item.title
tvContentCommentText.text = item.latestComment
layoutContentCommentArea.isVisible = item.showLatestComment
ivContentCommentProfile.loadUrl(item.latestCommentWriterProfileImageUrl)
root.setOnClickListener { onAudioClick(item) }
}
}
}