diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentAllActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentAllActivity.kt index d19d3f2a..de43ef7f 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentAllActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentAllActivity.kt @@ -4,10 +4,14 @@ import android.content.Intent import android.graphics.Rect import android.os.Bundle import android.view.View +import android.widget.TextView import android.widget.Toast +import androidx.core.content.ContextCompat import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import kr.co.vividnext.sodalive.R +import kr.co.vividnext.sodalive.audio_content.AudioContentViewModel import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity import kr.co.vividnext.sodalive.audio_content.main.new_content.AudioContentMainNewContentThemeAdapter import kr.co.vividnext.sodalive.base.BaseActivity @@ -58,6 +62,14 @@ class AudioContentAllActivity : BaseActivity( } binding.toolbar.tvBack.setOnClickListener { finish() } + binding.tvSortNewest.setOnClickListener { + viewModel.selectSort(AudioContentViewModel.Sort.NEWEST) + } + + binding.tvSortPopularity.setOnClickListener { + viewModel.selectSort(AudioContentViewModel.Sort.POPULARITY) + } + setupTheme() setupRecycler() } @@ -170,5 +182,45 @@ class AudioContentAllActivity : BaseActivity( } adapter.appendItems(list) } + + viewModel.sortLiveData.observe(this) { + deselectSort() + selectSort( + when (it) { + AudioContentViewModel.Sort.POPULARITY -> { + binding.tvSortPopularity + } + + else -> { + binding.tvSortNewest + } + } + ) + } + } + + private fun deselectSort() { + val color = ContextCompat.getColor( + applicationContext, + R.color.color_88e2e2e2 + ) + + binding.tvSortNewest.setTextColor(color) + binding.tvSortPopularity.setTextColor(color) + } + + private fun selectSort(view: TextView) { + view.setTextColor( + ContextCompat.getColor( + applicationContext, + R.color.color_e2e2e2 + ) + ) + + adapter.addItems(emptyList()) + viewModel.loadAll( + isFree = if (isFree) true else null, + isPointAvailableOnly = if (isPointOnly) true else null + ) } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentAllViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentAllViewModel.kt index 2063e945..c0dc13bd 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentAllViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/all/AudioContentAllViewModel.kt @@ -6,6 +6,7 @@ import com.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers import kr.co.vividnext.sodalive.audio_content.AudioContentRepository +import kr.co.vividnext.sodalive.audio_content.AudioContentViewModel import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.home.AudioContentMainItem @@ -27,6 +28,10 @@ class AudioContentAllViewModel( val themeListLiveData: LiveData> get() = _themeListLiveData + private var _sortLiveData = MutableLiveData(AudioContentViewModel.Sort.NEWEST) + val sortLiveData: LiveData + get() = _sortLiveData + private var page = 1 private val size = 20 private var isLast = false @@ -88,6 +93,7 @@ class AudioContentAllViewModel( size = size, isFree = isFree, isPointAvailableOnly = isPointAvailableOnly, + sortType = _sortLiveData.value!!, theme = if (selectedTheme == "전체") { null } else { @@ -119,4 +125,11 @@ class AudioContentAllViewModel( selectedTheme = theme loadAll(isFree, isPointOnly) } + + fun selectSort(sortType: AudioContentViewModel.Sort) { + if (_sortLiveData.value != sortType) { + reset() + _sortLiveData.value = sortType + } + } }