diff --git a/app/src/main/java/com/runnect/runnect/presentation/discover/pick/DiscoverPickActivity.kt b/app/src/main/java/com/runnect/runnect/presentation/discover/pick/DiscoverPickActivity.kt index fcd266ceb..dbf3da193 100644 --- a/app/src/main/java/com/runnect/runnect/presentation/discover/pick/DiscoverPickActivity.kt +++ b/app/src/main/java/com/runnect/runnect/presentation/discover/pick/DiscoverPickActivity.kt @@ -71,7 +71,7 @@ class DiscoverPickActivity : binding.ivDiscoverPickFinish.setOnClickListener { if (it.isActivated) { Intent(this, DiscoverUploadActivity::class.java).apply { - putExtra(EXTRA_UPLOAD_COURSE, viewModel.currentSelectedCourse) + putExtra(EXTRA_UPLOAD_COURSE, viewModel.selectedCourse) startActivity(this) } applyScreenEnterAnimation() @@ -146,7 +146,7 @@ class DiscoverPickActivity : onCourseItemClick = { isSelected, course -> viewModel.apply { updateCourseSelectState(isSelected) - if (isSelected) saveCurrentSelectedCourse(course) + if (isSelected) saveSelectedCourse(course) } } ).apply { diff --git a/app/src/main/java/com/runnect/runnect/presentation/discover/pick/DiscoverPickViewModel.kt b/app/src/main/java/com/runnect/runnect/presentation/discover/pick/DiscoverPickViewModel.kt index 7b4588371..42217588b 100644 --- a/app/src/main/java/com/runnect/runnect/presentation/discover/pick/DiscoverPickViewModel.kt +++ b/app/src/main/java/com/runnect/runnect/presentation/discover/pick/DiscoverPickViewModel.kt @@ -20,12 +20,12 @@ class DiscoverPickViewModel @Inject constructor( val courseGetState: LiveData?>> get() = _courseGetState - private val _courseSelectState = MutableLiveData() + private val _courseSelectState = MutableLiveData(false) val courseSelectState: LiveData get() = _courseSelectState - private var _currentSelectedCourse = DiscoverUploadCourse(-1, "", "", "") - val currentSelectedCourse get() = _currentSelectedCourse + private var _selectedCourse = DiscoverUploadCourse(-1, "", "", "") + val selectedCourse get() = _selectedCourse init { getMyCourseLoad() @@ -59,7 +59,7 @@ class DiscoverPickViewModel @Inject constructor( _courseSelectState.value = isSelected } - fun saveCurrentSelectedCourse(course: DiscoverUploadCourse) { - _currentSelectedCourse = course + fun saveSelectedCourse(course: DiscoverUploadCourse) { + _selectedCourse = course } } \ No newline at end of file diff --git a/app/src/main/java/com/runnect/runnect/presentation/discover/pick/adapter/DiscoverPickAdapter.kt b/app/src/main/java/com/runnect/runnect/presentation/discover/pick/adapter/DiscoverPickAdapter.kt index 7c0ccce7c..8c42a350a 100644 --- a/app/src/main/java/com/runnect/runnect/presentation/discover/pick/adapter/DiscoverPickAdapter.kt +++ b/app/src/main/java/com/runnect/runnect/presentation/discover/pick/adapter/DiscoverPickAdapter.kt @@ -1,7 +1,6 @@ package com.runnect.runnect.presentation.discover.pick.adapter import android.view.LayoutInflater -import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView @@ -12,33 +11,38 @@ import com.runnect.runnect.util.callback.diff.ItemDiffCallback class DiscoverPickAdapter( private val onCourseItemClick: (Boolean, DiscoverUploadCourse) -> Unit ) : ListAdapter(diffUtil) { + private var selectedPosition = -1 + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DiscoverPickViewHolder { return DiscoverPickViewHolder( - binding = ItemDiscoverPickBinding.inflate( + ItemDiscoverPickBinding.inflate( LayoutInflater.from(parent.context), parent, false - ), - onCourseItemClick = onCourseItemClick + ) ) } override fun onBindViewHolder(holder: DiscoverPickViewHolder, position: Int) { - holder.bind(currentList[position]) + holder.bind(currentList[position], position) } - class DiscoverPickViewHolder( - private val binding: ItemDiscoverPickBinding, - private val onCourseItemClick: (Boolean, DiscoverUploadCourse) -> Unit + inner class DiscoverPickViewHolder( + private val binding: ItemDiscoverPickBinding ) : RecyclerView.ViewHolder(binding.root) { - fun bind(course: DiscoverUploadCourse) { + fun bind(course: DiscoverUploadCourse, position: Int) { binding.course = course - binding.ivItemDiscoverPickBackground.isSelected = false - binding.ivItemDiscoverPickBackground.setOnClickListener { view -> - view.isSelected = !view.isSelected - onCourseItemClick.invoke(view.isSelected, course) + binding.ivItemDiscoverPickBackground.setOnClickListener { + notifyItemChanged(selectedPosition) // 이전에 선택한 것은 해제 + selectedPosition = absoluteAdapterPosition + notifyItemChanged(selectedPosition) // 새로 선택된 것은 활성화 + + onCourseItemClick.invoke(selectedPosition == position, course) } + + // 단일 선택된 항목의 배경 활성화 + binding.ivItemDiscoverPickBackground.isSelected = (selectedPosition == position) } }