feat(home): 콘텐츠 카드 클릭을 연결한다

This commit is contained in:
2026-06-05 16:01:31 +09:00
parent 7a4fa3c50f
commit 6679808a18
2 changed files with 14 additions and 7 deletions

View File

@@ -9,7 +9,9 @@ import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationAiCharacter
import kr.co.vividnext.sodalive.v2.widget.characterchatthumbnail.CharacterChatThumbnailItem
import kr.co.vividnext.sodalive.v2.widget.characterchatthumbnail.CharacterChatThumbnailView
class HomeAiCharacterAdapter : RecyclerView.Adapter<HomeAiCharacterAdapter.CharacterViewHolder>() {
class HomeAiCharacterAdapter(
private val onClickItem: (CharacterChatThumbnailItem) -> Unit = {}
) : RecyclerView.Adapter<HomeAiCharacterAdapter.CharacterViewHolder>() {
private var items: List<HomeRecommendationAiCharacterUiModel> = emptyList()
fun submitItems(items: List<HomeRecommendationAiCharacterUiModel>) {
@@ -25,7 +27,7 @@ class HomeAiCharacterAdapter : RecyclerView.Adapter<HomeAiCharacterAdapter.Chara
) as CharacterChatThumbnailView
(view.layoutParams as ViewGroup.MarginLayoutParams).marginEnd =
parent.resources.getDimensionPixelSize(R.dimen.spacing_4)
return CharacterViewHolder(view)
return CharacterViewHolder(view, onClickItem)
}
override fun onBindViewHolder(holder: CharacterViewHolder, position: Int) {
@@ -35,12 +37,13 @@ class HomeAiCharacterAdapter : RecyclerView.Adapter<HomeAiCharacterAdapter.Chara
override fun getItemCount(): Int = items.size
class CharacterViewHolder(
private val view: CharacterChatThumbnailView
private val view: CharacterChatThumbnailView,
private val onClickItem: (CharacterChatThumbnailItem) -> Unit
) : RecyclerView.ViewHolder(view) {
fun bind(item: CharacterChatThumbnailItem) {
view.bind(item)
view.imageView().loadUrl(item.imageUrl)
view.setOnCharacterClick(null)
view.setOnCharacterClick(onClickItem)
}
}
}

View File

@@ -16,7 +16,9 @@ import kr.co.vividnext.sodalive.extensions.loadUrl
import kr.co.vividnext.sodalive.v2.main.home.model.HomeRecommendationFirstAudioContentUiModel
import kr.co.vividnext.sodalive.v2.widget.AudioContentTag
class HomeFirstAudioAdapter : RecyclerView.Adapter<HomeFirstAudioAdapter.AudioViewHolder>() {
class HomeFirstAudioAdapter(
private val onClickItem: (HomeRecommendationFirstAudioContentUiModel) -> Unit = {}
) : RecyclerView.Adapter<HomeFirstAudioAdapter.AudioViewHolder>() {
private var items: List<HomeRecommendationFirstAudioContentUiModel> = emptyList()
fun submitItems(items: List<HomeRecommendationFirstAudioContentUiModel>) {
@@ -31,7 +33,7 @@ class HomeFirstAudioAdapter : RecyclerView.Adapter<HomeFirstAudioAdapter.AudioVi
false
)
view.layoutParams = recyclerItemLayoutParams(parent, R.dimen.spacing_4)
return AudioViewHolder(view)
return AudioViewHolder(view, onClickItem)
}
override fun onBindViewHolder(holder: AudioViewHolder, position: Int) {
@@ -41,7 +43,8 @@ class HomeFirstAudioAdapter : RecyclerView.Adapter<HomeFirstAudioAdapter.AudioVi
override fun getItemCount(): Int = items.size
class AudioViewHolder(
private val view: View
private val view: View,
private val onClickItem: (HomeRecommendationFirstAudioContentUiModel) -> Unit
) : RecyclerView.ViewHolder(view) {
private val thumbnail: ImageView = view.findViewById(R.id.iv_home_first_audio_thumbnail)
private val thumbnailContainer: FrameLayout = view.findViewById(R.id.fl_home_first_audio_thumbnail_container)
@@ -67,6 +70,7 @@ class HomeFirstAudioAdapter : RecyclerView.Adapter<HomeFirstAudioAdapter.AudioVi
bindImage(creatorProfile, item.creatorProfileImage)
creatorNickname.text = item.creatorNickname
bindTags(item.tags)
view.setOnClickListener { onClickItem(item) }
}
private fun bindImage(