콘텐츠 메인 단편 탭
- 큐레이션 추가
This commit is contained in:
		@@ -25,6 +25,7 @@ import kr.co.vividnext.sodalive.audio_content.main.AudioContentMainContentAdapte
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.banner.AudioContentMainBannerAdapter
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.new_content.AudioContentMainNewContentThemeAdapter
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.ranking.AudioContentMainRankingAdapter
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.v2.AudioContentMainContentCurationAdapter
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.v2.ContentRankCreatorAdapter
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.v2.PopularContentByCreatorAdapter
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.series.detail.SeriesDetailActivity
 | 
			
		||||
@@ -53,6 +54,7 @@ class AudioContentMainTabContentFragment : BaseFragment<FragmentAudioContentMain
 | 
			
		||||
    private lateinit var contentRankingSortAdapter: AudioContentMainNewContentThemeAdapter
 | 
			
		||||
    private lateinit var contentRankingAdapter: AudioContentMainRankingAdapter
 | 
			
		||||
    private lateinit var contentRankCreatorAdapter: ContentRankCreatorAdapter
 | 
			
		||||
    private lateinit var curationAdapter: AudioContentMainContentCurationAdapter
 | 
			
		||||
    private lateinit var popularContentByCreatorAdapter: PopularContentByCreatorAdapter
 | 
			
		||||
 | 
			
		||||
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
 | 
			
		||||
@@ -74,6 +76,7 @@ class AudioContentMainTabContentFragment : BaseFragment<FragmentAudioContentMain
 | 
			
		||||
        setupEventBanner()
 | 
			
		||||
        setupPopularContentCreator()
 | 
			
		||||
        setupPopularContentByCreator()
 | 
			
		||||
        setupCuration()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun setupContentBanner() {
 | 
			
		||||
@@ -503,6 +506,71 @@ class AudioContentMainTabContentFragment : BaseFragment<FragmentAudioContentMain
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun setupCuration() {
 | 
			
		||||
        curationAdapter = AudioContentMainContentCurationAdapter(
 | 
			
		||||
            onClickItem = {
 | 
			
		||||
                startActivity(
 | 
			
		||||
                    Intent(requireContext(), AudioContentDetailActivity::class.java).apply {
 | 
			
		||||
                        putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, it)
 | 
			
		||||
                    }
 | 
			
		||||
                )
 | 
			
		||||
            },
 | 
			
		||||
            onClickCreator = {
 | 
			
		||||
                startActivity(
 | 
			
		||||
                    Intent(requireContext(), UserProfileActivity::class.java).apply {
 | 
			
		||||
                        putExtra(Constants.EXTRA_USER_ID, it)
 | 
			
		||||
                    }
 | 
			
		||||
                )
 | 
			
		||||
            }
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        binding.rvCuration.layoutManager = LinearLayoutManager(
 | 
			
		||||
            context,
 | 
			
		||||
            LinearLayoutManager.VERTICAL,
 | 
			
		||||
            false
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        binding.rvCuration.addItemDecoration(object : RecyclerView.ItemDecoration() {
 | 
			
		||||
            override fun getItemOffsets(
 | 
			
		||||
                outRect: Rect,
 | 
			
		||||
                view: View,
 | 
			
		||||
                parent: RecyclerView,
 | 
			
		||||
                state: RecyclerView.State
 | 
			
		||||
            ) {
 | 
			
		||||
                super.getItemOffsets(outRect, view, parent, state)
 | 
			
		||||
 | 
			
		||||
                when (parent.getChildAdapterPosition(view)) {
 | 
			
		||||
                    0 -> {
 | 
			
		||||
                        outRect.top = 30f.dpToPx().toInt()
 | 
			
		||||
                        outRect.bottom = 15f.dpToPx().toInt()
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    curationAdapter.itemCount - 1 -> {
 | 
			
		||||
                        outRect.top = 15f.dpToPx().toInt()
 | 
			
		||||
                        outRect.bottom = 30f.dpToPx().toInt()
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    else -> {
 | 
			
		||||
                        outRect.top = 15f.dpToPx().toInt()
 | 
			
		||||
                        outRect.bottom = 15f.dpToPx().toInt()
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        binding.rvCuration.adapter = curationAdapter
 | 
			
		||||
 | 
			
		||||
        viewModel.curationListLiveData.observe(viewLifecycleOwner) {
 | 
			
		||||
            curationAdapter.addItems(it)
 | 
			
		||||
 | 
			
		||||
            binding.rvCuration.visibility = if (curationAdapter.itemCount <= 0 && it.isEmpty()) {
 | 
			
		||||
                View.GONE
 | 
			
		||||
            } else {
 | 
			
		||||
                View.VISIBLE
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun bindData() {
 | 
			
		||||
        viewModel.toastLiveData.observe(viewLifecycleOwner) {
 | 
			
		||||
            it?.let { Toast.makeText(requireContext(), it, Toast.LENGTH_LONG).show() }
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@ import kr.co.vividnext.sodalive.audio_content.main.ContentCreatorResponse
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentBannerResponse
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentMainItem
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentRankingItem
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.v2.GetContentCurationResponse
 | 
			
		||||
import kr.co.vividnext.sodalive.base.BaseViewModel
 | 
			
		||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
 | 
			
		||||
import kr.co.vividnext.sodalive.settings.event.EventItem
 | 
			
		||||
@@ -48,6 +49,10 @@ class AudioContentMainTabContentViewModel(
 | 
			
		||||
    val eventLiveData: LiveData<List<EventItem>>
 | 
			
		||||
        get() = _eventLiveData
 | 
			
		||||
 | 
			
		||||
    private var _curationListLiveData = MutableLiveData<List<GetContentCurationResponse>>()
 | 
			
		||||
    val curationListLiveData: LiveData<List<GetContentCurationResponse>>
 | 
			
		||||
        get() = _curationListLiveData
 | 
			
		||||
 | 
			
		||||
    private val _contentRankCreatorListLiveData = MutableLiveData<List<ContentCreatorResponse>>()
 | 
			
		||||
    val contentRankCreatorListLiveData: LiveData<List<ContentCreatorResponse>>
 | 
			
		||||
        get() = _contentRankCreatorListLiveData
 | 
			
		||||
@@ -81,6 +86,7 @@ class AudioContentMainTabContentViewModel(
 | 
			
		||||
                            _contentRankCreatorListLiveData.value = data.contentRankCreatorList
 | 
			
		||||
                            _salesCountRankContentListLiveData.value =
 | 
			
		||||
                                data.salesCountRankContentList
 | 
			
		||||
                            _curationListLiveData.value = data.curationList
 | 
			
		||||
                        } else {
 | 
			
		||||
                            if (it.message != null) {
 | 
			
		||||
                                _toastLiveData.postValue(it.message)
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ import kr.co.vividnext.sodalive.audio_content.main.ContentCreatorResponse
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentBannerResponse
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentMainItem
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentRankingItem
 | 
			
		||||
import kr.co.vividnext.sodalive.audio_content.main.v2.GetContentCurationResponse
 | 
			
		||||
import kr.co.vividnext.sodalive.settings.event.GetEventResponse
 | 
			
		||||
 | 
			
		||||
@Keep
 | 
			
		||||
@@ -17,5 +18,6 @@ data class GetContentMainTabContentResponse(
 | 
			
		||||
    @SerializedName("rankContentList") val rankContentList: List<GetAudioContentRankingItem>,
 | 
			
		||||
    @SerializedName("contentRankCreatorList") val contentRankCreatorList: List<ContentCreatorResponse>,
 | 
			
		||||
    @SerializedName("salesCountRankContentList") val salesCountRankContentList: List<GetAudioContentRankingItem>,
 | 
			
		||||
    @SerializedName("eventBannerList") val eventBannerList: GetEventResponse
 | 
			
		||||
    @SerializedName("eventBannerList") val eventBannerList: GetEventResponse,
 | 
			
		||||
    @SerializedName("curationList") val curationList: List<GetContentCurationResponse>
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user