feat(audio-content-all): 최신순/인기순 정렬 추가
This commit is contained in:
@@ -4,10 +4,14 @@ import android.content.Intent
|
|||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
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.detail.AudioContentDetailActivity
|
||||||
import kr.co.vividnext.sodalive.audio_content.main.new_content.AudioContentMainNewContentThemeAdapter
|
import kr.co.vividnext.sodalive.audio_content.main.new_content.AudioContentMainNewContentThemeAdapter
|
||||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||||
@@ -58,6 +62,14 @@ class AudioContentAllActivity : BaseActivity<ActivityAudioContentAllBinding>(
|
|||||||
}
|
}
|
||||||
binding.toolbar.tvBack.setOnClickListener { finish() }
|
binding.toolbar.tvBack.setOnClickListener { finish() }
|
||||||
|
|
||||||
|
binding.tvSortNewest.setOnClickListener {
|
||||||
|
viewModel.selectSort(AudioContentViewModel.Sort.NEWEST)
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.tvSortPopularity.setOnClickListener {
|
||||||
|
viewModel.selectSort(AudioContentViewModel.Sort.POPULARITY)
|
||||||
|
}
|
||||||
|
|
||||||
setupTheme()
|
setupTheme()
|
||||||
setupRecycler()
|
setupRecycler()
|
||||||
}
|
}
|
||||||
@@ -170,5 +182,45 @@ class AudioContentAllActivity : BaseActivity<ActivityAudioContentAllBinding>(
|
|||||||
}
|
}
|
||||||
adapter.appendItems(list)
|
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
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.orhanobut.logger.Logger
|
|||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
import kr.co.vividnext.sodalive.audio_content.AudioContentRepository
|
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.base.BaseViewModel
|
||||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
||||||
import kr.co.vividnext.sodalive.home.AudioContentMainItem
|
import kr.co.vividnext.sodalive.home.AudioContentMainItem
|
||||||
@@ -27,6 +28,10 @@ class AudioContentAllViewModel(
|
|||||||
val themeListLiveData: LiveData<List<String>>
|
val themeListLiveData: LiveData<List<String>>
|
||||||
get() = _themeListLiveData
|
get() = _themeListLiveData
|
||||||
|
|
||||||
|
private var _sortLiveData = MutableLiveData(AudioContentViewModel.Sort.NEWEST)
|
||||||
|
val sortLiveData: LiveData<AudioContentViewModel.Sort>
|
||||||
|
get() = _sortLiveData
|
||||||
|
|
||||||
private var page = 1
|
private var page = 1
|
||||||
private val size = 20
|
private val size = 20
|
||||||
private var isLast = false
|
private var isLast = false
|
||||||
@@ -88,6 +93,7 @@ class AudioContentAllViewModel(
|
|||||||
size = size,
|
size = size,
|
||||||
isFree = isFree,
|
isFree = isFree,
|
||||||
isPointAvailableOnly = isPointAvailableOnly,
|
isPointAvailableOnly = isPointAvailableOnly,
|
||||||
|
sortType = _sortLiveData.value!!,
|
||||||
theme = if (selectedTheme == "전체") {
|
theme = if (selectedTheme == "전체") {
|
||||||
null
|
null
|
||||||
} else {
|
} else {
|
||||||
@@ -119,4 +125,11 @@ class AudioContentAllViewModel(
|
|||||||
selectedTheme = theme
|
selectedTheme = theme
|
||||||
loadAll(isFree, isPointOnly)
|
loadAll(isFree, isPointOnly)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun selectSort(sortType: AudioContentViewModel.Sort) {
|
||||||
|
if (_sortLiveData.value != sortType) {
|
||||||
|
reset()
|
||||||
|
_sortLiveData.value = sortType
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user