콘텐츠 큐레이션 전체보기 - UI 형태 그리드로 변경
This commit is contained in:
parent
a286ee760d
commit
a53b76415b
|
@ -8,16 +8,18 @@ import android.view.View
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
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.R
|
||||||
import kr.co.vividnext.sodalive.audio_content.AudioContentAdapter
|
|
||||||
import kr.co.vividnext.sodalive.audio_content.AudioContentViewModel
|
import kr.co.vividnext.sodalive.audio_content.AudioContentViewModel
|
||||||
|
import kr.co.vividnext.sodalive.audio_content.all.AudioContentNewAllAdapter
|
||||||
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
import kr.co.vividnext.sodalive.audio_content.detail.AudioContentDetailActivity
|
||||||
import kr.co.vividnext.sodalive.base.BaseActivity
|
import kr.co.vividnext.sodalive.base.BaseActivity
|
||||||
import kr.co.vividnext.sodalive.common.Constants
|
import kr.co.vividnext.sodalive.common.Constants
|
||||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||||
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentCurationBinding
|
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentCurationBinding
|
||||||
|
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
|
||||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
|
|
||||||
|
@ -28,7 +30,7 @@ class AudioContentCurationActivity : BaseActivity<ActivityAudioContentCurationBi
|
||||||
private val viewModel: AudioContentCurationViewModel by inject()
|
private val viewModel: AudioContentCurationViewModel by inject()
|
||||||
|
|
||||||
private lateinit var loadingDialog: LoadingDialog
|
private lateinit var loadingDialog: LoadingDialog
|
||||||
private lateinit var adapter: AudioContentAdapter
|
private lateinit var adapter: AudioContentNewAllAdapter
|
||||||
|
|
||||||
private var curationId: Long = 0
|
private var curationId: Long = 0
|
||||||
private lateinit var title: String
|
private lateinit var title: String
|
||||||
|
@ -52,20 +54,26 @@ class AudioContentCurationActivity : BaseActivity<ActivityAudioContentCurationBi
|
||||||
binding.toolbar.tvBack.text = title
|
binding.toolbar.tvBack.text = title
|
||||||
binding.toolbar.tvBack.setOnClickListener { finish() }
|
binding.toolbar.tvBack.setOnClickListener { finish() }
|
||||||
|
|
||||||
adapter = AudioContentAdapter {
|
adapter = AudioContentNewAllAdapter(
|
||||||
startActivity(
|
itemWidth = (screenWidth - 40f.dpToPx().toInt()) / 2,
|
||||||
Intent(applicationContext, AudioContentDetailActivity::class.java).apply {
|
onClickItem = {
|
||||||
putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, it)
|
startActivity(
|
||||||
}
|
Intent(this, AudioContentDetailActivity::class.java).apply {
|
||||||
)
|
putExtra(Constants.EXTRA_AUDIO_CONTENT_ID, it)
|
||||||
}
|
}
|
||||||
|
)
|
||||||
binding.rvCuration.layoutManager = LinearLayoutManager(
|
},
|
||||||
applicationContext,
|
onClickCreator = {
|
||||||
LinearLayoutManager.VERTICAL,
|
startActivity(
|
||||||
false
|
Intent(this, UserProfileActivity::class.java).apply {
|
||||||
|
putExtra(Constants.EXTRA_USER_ID, it)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
binding.rvCuration.layoutManager = GridLayoutManager(this, 2)
|
||||||
|
|
||||||
binding.rvCuration.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
binding.rvCuration.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
||||||
override fun getItemOffsets(
|
override fun getItemOffsets(
|
||||||
outRect: Rect,
|
outRect: Rect,
|
||||||
|
@ -75,25 +83,31 @@ class AudioContentCurationActivity : BaseActivity<ActivityAudioContentCurationBi
|
||||||
) {
|
) {
|
||||||
super.getItemOffsets(outRect, view, parent, state)
|
super.getItemOffsets(outRect, view, parent, state)
|
||||||
|
|
||||||
when (parent.getChildAdapterPosition(view)) {
|
val position = parent.getChildAdapterPosition(view)
|
||||||
0 -> {
|
if (position % 2 == 0) {
|
||||||
outRect.top = 40f.dpToPx().toInt()
|
outRect.left = 13.3f.dpToPx().toInt()
|
||||||
outRect.bottom = 20f.dpToPx().toInt()
|
outRect.right = 6.7f.dpToPx().toInt()
|
||||||
|
} else {
|
||||||
|
outRect.left = 6.7f.dpToPx().toInt()
|
||||||
|
outRect.right = 13.3f.dpToPx().toInt()
|
||||||
|
}
|
||||||
|
|
||||||
|
when (position) {
|
||||||
|
0, 1 -> {
|
||||||
|
outRect.top = 13.3f.dpToPx().toInt()
|
||||||
|
outRect.bottom = 6.7f.dpToPx().toInt()
|
||||||
}
|
}
|
||||||
|
|
||||||
adapter.itemCount - 1 -> {
|
adapter.itemCount - 1, adapter.itemCount - 2 -> {
|
||||||
outRect.top = 20f.dpToPx().toInt()
|
outRect.top = 6.7f.dpToPx().toInt()
|
||||||
outRect.bottom = 40f.dpToPx().toInt()
|
outRect.bottom = 13.3f.dpToPx().toInt()
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
outRect.top = 20f.dpToPx().toInt()
|
outRect.top = 6.7f.dpToPx().toInt()
|
||||||
outRect.bottom = 20f.dpToPx().toInt()
|
outRect.bottom = 6.7f.dpToPx().toInt()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
outRect.left = 13.3f.dpToPx().toInt()
|
|
||||||
outRect.right = 13.3f.dpToPx().toInt()
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -145,14 +159,12 @@ class AudioContentCurationActivity : BaseActivity<ActivityAudioContentCurationBi
|
||||||
|
|
||||||
viewModel.contentListLiveData.observe(this) {
|
viewModel.contentListLiveData.observe(this) {
|
||||||
if (viewModel.page - 1 == 1) {
|
if (viewModel.page - 1 == 1) {
|
||||||
adapter.items.clear()
|
adapter.clear()
|
||||||
binding.rvCuration.scrollToPosition(0)
|
binding.rvCuration.scrollToPosition(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.tvTotalCount.text = "${it.totalCount}"
|
binding.tvTotalCount.text = "${it.totalCount}"
|
||||||
|
adapter.addItems(it.items)
|
||||||
adapter.items.addAll(it.items)
|
|
||||||
adapter.notifyDataSetChanged()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
viewModel.sort.observe(this) {
|
viewModel.sort.observe(this) {
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
package kr.co.vividnext.sodalive.audio_content.curation
|
package kr.co.vividnext.sodalive.audio_content.curation
|
||||||
|
|
||||||
import com.google.gson.annotations.SerializedName
|
import com.google.gson.annotations.SerializedName
|
||||||
import kr.co.vividnext.sodalive.explorer.profile.GetAudioContentListItem
|
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentMainItem
|
||||||
|
|
||||||
data class GetCurationContentResponse(
|
data class GetCurationContentResponse(
|
||||||
@SerializedName("totalCount") val totalCount: Int,
|
@SerializedName("totalCount") val totalCount: Int,
|
||||||
@SerializedName("items") val items: List<GetAudioContentListItem>
|
@SerializedName("items") val items: List<GetAudioContentMainItem>
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue