选中状态切换
This commit is contained in:
parent
3ff778132a
commit
993b2bf5e0
|
|
@ -5,10 +5,13 @@ import com.ama.core.architecture.util.setOnClickBatch
|
|||
import com.ama.core.architecture.widget.BindingDialog
|
||||
import com.gamedog.vididin.databinding.DialogDailySignBinding
|
||||
import com.gamedog.vididin.manager.TaskManager
|
||||
import com.gamedog.vididin.widget.DailySignItemView
|
||||
|
||||
|
||||
class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(context, DialogDailySignBinding::inflate) {
|
||||
private var mDataList: List<RewardDetail>? = emptyList()
|
||||
private var mSignItemList: MutableList<DailySignItemView> = mutableListOf()
|
||||
|
||||
|
||||
init {
|
||||
build()
|
||||
|
|
@ -42,21 +45,34 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
|||
|
||||
private fun initDailySignItems() {
|
||||
with(mBinding) {
|
||||
mDataList?.size?.let {
|
||||
if (it >= 7) {
|
||||
signItem1.setData(mDataList!![0])
|
||||
signItem2.setData(mDataList!![1])
|
||||
signItem3.setData(mDataList!![2])
|
||||
signItem4.setData(mDataList!![3])
|
||||
signItem5.setData(mDataList!![4])
|
||||
signItem6.setData(mDataList!![5])
|
||||
signItem7.setData(mDataList!![6])
|
||||
signItem7.setLargeWidthMode()
|
||||
|
||||
mSignItemList.add(signItem1)
|
||||
mSignItemList.add(signItem2)
|
||||
mSignItemList.add(signItem3)
|
||||
mSignItemList.add(signItem4)
|
||||
mSignItemList.add(signItem5)
|
||||
mSignItemList.add(signItem6)
|
||||
mSignItemList.add(signItem7)
|
||||
|
||||
mDataList?.let {
|
||||
mSignItemList.forEachIndexed { index, itemView->
|
||||
itemView.setData(mDataList!![index], { isSelected ->
|
||||
handleItemSelectStateChanged(index, isSelected)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
signItem7.setLargeWidthMode()
|
||||
private fun handleItemSelectStateChanged(itemIndex: Int, selected: Boolean) {
|
||||
mSignItemList.forEachIndexed { index, itemView ->
|
||||
if (itemIndex != index) {
|
||||
itemView.setSelectState(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun handleRightButClicked() {
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.content.Context
|
|||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.widget.LinearLayout
|
||||
import com.ama.core.architecture.util.setOnClickBatch
|
||||
import com.gamedog.vididin.R
|
||||
import com.gamedog.vididin.databinding.DailySignItemBinding
|
||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||
|
|
@ -17,20 +18,32 @@ class DailySignItemView @JvmOverloads constructor(
|
|||
) : LinearLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
private lateinit var mData: RewardDetail
|
||||
private lateinit var mBinding: DailySignItemBinding
|
||||
private var mBinding: DailySignItemBinding
|
||||
private var mIsSelected = false
|
||||
private var mSelectStateCallback: ((isSelected: Boolean)->Unit)? = null
|
||||
|
||||
|
||||
init {
|
||||
mBinding = DailySignItemBinding.inflate(LayoutInflater.from(context), this, true)
|
||||
mBinding.run {
|
||||
|
||||
setOnClickBatch(contentRoot) {
|
||||
when(this) {
|
||||
contentRoot -> {
|
||||
if (!mIsSelected) {
|
||||
setSelectState(true)
|
||||
mSelectStateCallback?.invoke(mIsSelected)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun setData(data: RewardDetail) {
|
||||
fun setData(data: RewardDetail, selectStateCallback: (isSelected: Boolean)->Unit) {
|
||||
mData = data
|
||||
mSelectStateCallback = selectStateCallback
|
||||
mBinding.tvGoldNum.text = "" + mData.value
|
||||
mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mData.day
|
||||
}
|
||||
|
|
@ -40,6 +53,17 @@ class DailySignItemView @JvmOverloads constructor(
|
|||
mBinding.ivBg.setImageResource(R.mipmap.bg_biginner_daily_large)
|
||||
}
|
||||
|
||||
fun setSelectState(isSelect: Boolean) {
|
||||
mIsSelected = isSelect
|
||||
if (mIsSelected) {
|
||||
mBinding.rlRoot.setBackgroundResource(R.drawable.bg_daily_sign_day_item)
|
||||
} else {
|
||||
mBinding.rlRoot.background = null
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape android:shape="rectangle"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<stroke android:width="2dp" android:color="#ffff0000" />
|
||||
<corners android:topLeftRadius="8dp" android:topRightRadius="8dp" android:bottomLeftRadius="8dp" android:bottomRightRadius="8dp" />
|
||||
|
||||
</shape>
|
||||
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/content_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
|
|
@ -8,8 +9,10 @@
|
|||
>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
android:id="@+id/rl_root"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="2dp">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/iv_bg"
|
||||
|
|
|
|||
Loading…
Reference in New Issue