选中状态切换
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.ama.core.architecture.widget.BindingDialog
|
||||||
import com.gamedog.vididin.databinding.DialogDailySignBinding
|
import com.gamedog.vididin.databinding.DialogDailySignBinding
|
||||||
import com.gamedog.vididin.manager.TaskManager
|
import com.gamedog.vididin.manager.TaskManager
|
||||||
|
import com.gamedog.vididin.widget.DailySignItemView
|
||||||
|
|
||||||
|
|
||||||
class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(context, DialogDailySignBinding::inflate) {
|
class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(context, DialogDailySignBinding::inflate) {
|
||||||
private var mDataList: List<RewardDetail>? = emptyList()
|
private var mDataList: List<RewardDetail>? = emptyList()
|
||||||
|
private var mSignItemList: MutableList<DailySignItemView> = mutableListOf()
|
||||||
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
build()
|
build()
|
||||||
|
|
@ -42,21 +45,34 @@ class DailySignDialog(context: Context) : BindingDialog<DialogDailySignBinding>(
|
||||||
|
|
||||||
private fun initDailySignItems() {
|
private fun initDailySignItems() {
|
||||||
with(mBinding) {
|
with(mBinding) {
|
||||||
mDataList?.size?.let {
|
signItem7.setLargeWidthMode()
|
||||||
if (it >= 7) {
|
|
||||||
signItem1.setData(mDataList!![0])
|
mSignItemList.add(signItem1)
|
||||||
signItem2.setData(mDataList!![1])
|
mSignItemList.add(signItem2)
|
||||||
signItem3.setData(mDataList!![2])
|
mSignItemList.add(signItem3)
|
||||||
signItem4.setData(mDataList!![3])
|
mSignItemList.add(signItem4)
|
||||||
signItem5.setData(mDataList!![4])
|
mSignItemList.add(signItem5)
|
||||||
signItem6.setData(mDataList!![5])
|
mSignItemList.add(signItem6)
|
||||||
signItem7.setData(mDataList!![6])
|
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() {
|
private fun handleRightButClicked() {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import android.content.Context
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.widget.LinearLayout
|
import android.widget.LinearLayout
|
||||||
|
import com.ama.core.architecture.util.setOnClickBatch
|
||||||
import com.gamedog.vididin.R
|
import com.gamedog.vididin.R
|
||||||
import com.gamedog.vididin.databinding.DailySignItemBinding
|
import com.gamedog.vididin.databinding.DailySignItemBinding
|
||||||
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
import com.gamedog.vididin.main.fragments.task.RewardDetail
|
||||||
|
|
@ -17,20 +18,32 @@ class DailySignItemView @JvmOverloads constructor(
|
||||||
) : LinearLayout(context, attrs, defStyleAttr) {
|
) : LinearLayout(context, attrs, defStyleAttr) {
|
||||||
|
|
||||||
private lateinit var mData: RewardDetail
|
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 {
|
init {
|
||||||
mBinding = DailySignItemBinding.inflate(LayoutInflater.from(context), this, true)
|
mBinding = DailySignItemBinding.inflate(LayoutInflater.from(context), this, true)
|
||||||
mBinding.run {
|
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
|
mData = data
|
||||||
|
mSelectStateCallback = selectStateCallback
|
||||||
mBinding.tvGoldNum.text = "" + mData.value
|
mBinding.tvGoldNum.text = "" + mData.value
|
||||||
mBinding.tvDayNum.text = context.getString(R.string.day) + " "+ mData.day
|
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)
|
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"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/content_root"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
|
@ -8,8 +9,10 @@
|
||||||
>
|
>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:id="@+id/rl_root"
|
||||||
android:layout_height="wrap_content">
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:padding="2dp">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/iv_bg"
|
android:id="@+id/iv_bg"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue