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.CharacterChatThumbnailItem
import kr.co.vividnext.sodalive.v2.widget.characterchatthumbnail.CharacterChatThumbnailView 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() private var items: List<HomeRecommendationAiCharacterUiModel> = emptyList()
fun submitItems(items: List<HomeRecommendationAiCharacterUiModel>) { fun submitItems(items: List<HomeRecommendationAiCharacterUiModel>) {
@@ -25,7 +27,7 @@ class HomeAiCharacterAdapter : RecyclerView.Adapter<HomeAiCharacterAdapter.Chara
) as CharacterChatThumbnailView ) as CharacterChatThumbnailView
(view.layoutParams as ViewGroup.MarginLayoutParams).marginEnd = (view.layoutParams as ViewGroup.MarginLayoutParams).marginEnd =
parent.resources.getDimensionPixelSize(R.dimen.spacing_4) parent.resources.getDimensionPixelSize(R.dimen.spacing_4)
return CharacterViewHolder(view) return CharacterViewHolder(view, onClickItem)
} }
override fun onBindViewHolder(holder: CharacterViewHolder, position: Int) { override fun onBindViewHolder(holder: CharacterViewHolder, position: Int) {
@@ -35,12 +37,13 @@ class HomeAiCharacterAdapter : RecyclerView.Adapter<HomeAiCharacterAdapter.Chara
override fun getItemCount(): Int = items.size override fun getItemCount(): Int = items.size
class CharacterViewHolder( class CharacterViewHolder(
private val view: CharacterChatThumbnailView private val view: CharacterChatThumbnailView,
private val onClickItem: (CharacterChatThumbnailItem) -> Unit
) : RecyclerView.ViewHolder(view) { ) : RecyclerView.ViewHolder(view) {
fun bind(item: CharacterChatThumbnailItem) { fun bind(item: CharacterChatThumbnailItem) {
view.bind(item) view.bind(item)
view.imageView().loadUrl(item.imageUrl) 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.main.home.model.HomeRecommendationFirstAudioContentUiModel
import kr.co.vividnext.sodalive.v2.widget.AudioContentTag 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() private var items: List<HomeRecommendationFirstAudioContentUiModel> = emptyList()
fun submitItems(items: List<HomeRecommendationFirstAudioContentUiModel>) { fun submitItems(items: List<HomeRecommendationFirstAudioContentUiModel>) {
@@ -31,7 +33,7 @@ class HomeFirstAudioAdapter : RecyclerView.Adapter<HomeFirstAudioAdapter.AudioVi
false false
) )
view.layoutParams = recyclerItemLayoutParams(parent, R.dimen.spacing_4) view.layoutParams = recyclerItemLayoutParams(parent, R.dimen.spacing_4)
return AudioViewHolder(view) return AudioViewHolder(view, onClickItem)
} }
override fun onBindViewHolder(holder: AudioViewHolder, position: Int) { override fun onBindViewHolder(holder: AudioViewHolder, position: Int) {
@@ -41,7 +43,8 @@ class HomeFirstAudioAdapter : RecyclerView.Adapter<HomeFirstAudioAdapter.AudioVi
override fun getItemCount(): Int = items.size override fun getItemCount(): Int = items.size
class AudioViewHolder( class AudioViewHolder(
private val view: View private val view: View,
private val onClickItem: (HomeRecommendationFirstAudioContentUiModel) -> Unit
) : RecyclerView.ViewHolder(view) { ) : RecyclerView.ViewHolder(view) {
private val thumbnail: ImageView = view.findViewById(R.id.iv_home_first_audio_thumbnail) 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) 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) bindImage(creatorProfile, item.creatorProfileImage)
creatorNickname.text = item.creatorNickname creatorNickname.text = item.creatorNickname
bindTags(item.tags) bindTags(item.tags)
view.setOnClickListener { onClickItem(item) }
} }
private fun bindImage( private fun bindImage(