parent
dfb2c903a4
commit
c5a173138c
|
@ -35,7 +35,7 @@ android {
|
||||||
applicationId "kr.co.vividnext.sodalive"
|
applicationId "kr.co.vividnext.sodalive"
|
||||||
minSdk 23
|
minSdk 23
|
||||||
targetSdk 34
|
targetSdk 34
|
||||||
versionCode 158
|
versionCode 159
|
||||||
versionName "1.34.0"
|
versionName "1.34.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
package kr.co.vividnext.sodalive.audio_content.detail
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import coil.load
|
||||||
|
import coil.transform.CircleCropTransformation
|
||||||
|
import kr.co.vividnext.sodalive.R
|
||||||
|
import kr.co.vividnext.sodalive.databinding.ItemLiveRoomDetailUserBinding
|
||||||
|
|
||||||
|
class AudioContentBuyerAdapter : RecyclerView.Adapter<AudioContentBuyerAdapter.ViewHolder>() {
|
||||||
|
|
||||||
|
private val items = mutableListOf<ContentBuyer>()
|
||||||
|
|
||||||
|
inner class ViewHolder(
|
||||||
|
private val binding: ItemLiveRoomDetailUserBinding
|
||||||
|
) : RecyclerView.ViewHolder(binding.root) {
|
||||||
|
fun bind(item: ContentBuyer) {
|
||||||
|
binding.tvNickname.text = item.nickname
|
||||||
|
binding.ivProfile.load(item.profileImageUrl) {
|
||||||
|
crossfade(true)
|
||||||
|
placeholder(R.drawable.ic_place_holder)
|
||||||
|
transformations(CircleCropTransformation())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateViewHolder(
|
||||||
|
parent: ViewGroup,
|
||||||
|
viewType: Int
|
||||||
|
): ViewHolder {
|
||||||
|
return ViewHolder(
|
||||||
|
ItemLiveRoomDetailUserBinding.inflate(
|
||||||
|
LayoutInflater.from(parent.context),
|
||||||
|
parent,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBindViewHolder(
|
||||||
|
holder: ViewHolder,
|
||||||
|
position: Int
|
||||||
|
) {
|
||||||
|
holder.bind(items[position])
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getItemCount() = items.count()
|
||||||
|
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
fun addItems(buyerList: List<ContentBuyer>) {
|
||||||
|
items.addAll(buyerList)
|
||||||
|
notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
}
|
|
@ -81,6 +81,7 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
|
||||||
private var title = ""
|
private var title = ""
|
||||||
|
|
||||||
private lateinit var activityResultLauncher: ActivityResultLauncher<Intent>
|
private lateinit var activityResultLauncher: ActivityResultLauncher<Intent>
|
||||||
|
private lateinit var contentBuyerAdapter: AudioContentBuyerAdapter
|
||||||
private lateinit var audioContent: GetAudioContentDetailResponse
|
private lateinit var audioContent: GetAudioContentDetailResponse
|
||||||
private lateinit var orderType: OrderType
|
private lateinit var orderType: OrderType
|
||||||
private lateinit var imm: InputMethodManager
|
private lateinit var imm: InputMethodManager
|
||||||
|
@ -298,6 +299,36 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
|
||||||
|
|
||||||
dialog.show(screenWidth - 26.7f.dpToPx().toInt())
|
dialog.show(screenWidth - 26.7f.dpToPx().toInt())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setupBuyerList()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupBuyerList() {
|
||||||
|
val recyclerView = binding.rvBuyer
|
||||||
|
contentBuyerAdapter = AudioContentBuyerAdapter()
|
||||||
|
|
||||||
|
recyclerView.layoutManager = LinearLayoutManager(
|
||||||
|
this,
|
||||||
|
LinearLayoutManager.HORIZONTAL,
|
||||||
|
false
|
||||||
|
)
|
||||||
|
|
||||||
|
recyclerView.addItemDecoration(object : RecyclerView.ItemDecoration() {
|
||||||
|
override fun getItemOffsets(
|
||||||
|
outRect: Rect,
|
||||||
|
view: View,
|
||||||
|
parent: RecyclerView,
|
||||||
|
state: RecyclerView.State
|
||||||
|
) {
|
||||||
|
super.getItemOffsets(outRect, view, parent, state)
|
||||||
|
|
||||||
|
outRect.top = 6.7f.dpToPx().toInt()
|
||||||
|
outRect.bottom = 6.7f.dpToPx().toInt()
|
||||||
|
outRect.left = 6.7f.dpToPx().toInt()
|
||||||
|
outRect.right = 6.7f.dpToPx().toInt()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
recyclerView.adapter = contentBuyerAdapter
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun donation(can: Int, message: String) {
|
private fun donation(can: Int, message: String) {
|
||||||
|
@ -924,8 +955,16 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
|
||||||
|
|
||||||
binding.tvRemainingCount.text = "${response.remainingContentCount}"
|
binding.tvRemainingCount.text = "${response.remainingContentCount}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (response.buyerList.isNotEmpty()) {
|
||||||
|
binding.rvBuyer.visibility = View.VISIBLE
|
||||||
|
binding.tvBuyerTitle.visibility = View.VISIBLE
|
||||||
|
contentBuyerAdapter.addItems(response.buyerList)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
binding.rlLimitedEdition.visibility = View.GONE
|
binding.rlLimitedEdition.visibility = View.GONE
|
||||||
|
binding.rvBuyer.visibility = View.GONE
|
||||||
|
binding.tvBuyerTitle.visibility = View.GONE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,8 @@ data class GetAudioContentDetailResponse(
|
||||||
@SerializedName("isAvailablePin") val isAvailablePin: Boolean,
|
@SerializedName("isAvailablePin") val isAvailablePin: Boolean,
|
||||||
@SerializedName("creator") val creator: AudioContentCreator,
|
@SerializedName("creator") val creator: AudioContentCreator,
|
||||||
@SerializedName("previousContent") val previousContent: OtherContentResponse?,
|
@SerializedName("previousContent") val previousContent: OtherContentResponse?,
|
||||||
@SerializedName("nextContent") val nextContent: OtherContentResponse?
|
@SerializedName("nextContent") val nextContent: OtherContentResponse?,
|
||||||
|
@SerializedName("buyerList") val buyerList: List<ContentBuyer>
|
||||||
)
|
)
|
||||||
|
|
||||||
@Keep
|
@Keep
|
||||||
|
@ -60,3 +61,9 @@ data class AudioContentCreator(
|
||||||
@SerializedName("isFollow") var isFollow: Boolean,
|
@SerializedName("isFollow") var isFollow: Boolean,
|
||||||
@SerializedName("isNotify") var isNotify: Boolean
|
@SerializedName("isNotify") var isNotify: Boolean
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Keep
|
||||||
|
data class ContentBuyer(
|
||||||
|
@SerializedName("nickname") val nickname: String,
|
||||||
|
@SerializedName("profileImageUrl") val profileImageUrl: String
|
||||||
|
)
|
||||||
|
|
|
@ -534,6 +534,7 @@
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
android:fontFamily="@font/gmarket_sans_medium"
|
android:fontFamily="@font/gmarket_sans_medium"
|
||||||
android:text="한정판"
|
android:text="한정판"
|
||||||
android:textColor="@color/color_3bb9f1"
|
android:textColor="@color/color_3bb9f1"
|
||||||
|
@ -543,6 +544,7 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_centerVertical="true"
|
||||||
android:orientation="horizontal"
|
android:orientation="horizontal"
|
||||||
tools:ignore="RelativeOverlap">
|
tools:ignore="RelativeOverlap">
|
||||||
|
|
||||||
|
@ -589,10 +591,31 @@
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_buyer_title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="13.3dp"
|
||||||
|
android:layout_marginTop="13.3dp"
|
||||||
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
|
android:text="구매자"
|
||||||
|
android:textColor="@color/color_eeeeee"
|
||||||
|
android:textSize="18.3sp"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/rv_buyer"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginHorizontal="13.3dp"
|
||||||
|
android:layout_marginTop="13.3dp"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginHorizontal="13.3dp">
|
android:layout_marginHorizontal="13.3dp"
|
||||||
|
android:layout_marginTop="13.3dp">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@ -603,7 +626,7 @@
|
||||||
android:id="@+id/tv_tag"
|
android:id="@+id/tv_tag"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="13.3dp"
|
android:layout_marginBottom="8dp"
|
||||||
android:textColor="@color/color_3bb9f1"
|
android:textColor="@color/color_3bb9f1"
|
||||||
android:textSize="12sp"
|
android:textSize="12sp"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
|
@ -613,7 +636,6 @@
|
||||||
android:id="@+id/tv_detail"
|
android:id="@+id/tv_detail"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="8dp"
|
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:fontFamily="@font/gmarket_sans_medium"
|
android:fontFamily="@font/gmarket_sans_medium"
|
||||||
android:lineSpacingExtra="5dp"
|
android:lineSpacingExtra="5dp"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
|
Loading…
Reference in New Issue