子任务根据state 刷新

This commit is contained in:
renhaoting 2025-12-03 17:38:23 +08:00
parent e6c0220019
commit 0bf9922be7
4 changed files with 88 additions and 4 deletions

View File

@ -27,6 +27,8 @@ import com.gamedog.vididin.main.MainViewModel as ViewModel
@AndroidEntryPoint
class BenefitActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnTabStyleListener {
private val mSubTaskViewList = mutableListOf<BenefitTaskItemView>()
override val mViewModel: ViewModel by viewModels()
override fun inflateViewBinding(inflater: LayoutInflater) = ViewBinding.inflate(inflater)
@ -64,6 +66,7 @@ class BenefitActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnT
private fun initViewsByTaskState() {
initAddSubTaskViews()
updateSubTasksUI()
updateTopBoxesUI()
}
@ -81,10 +84,22 @@ class BenefitActivity : AppViewsActivity<ViewBinding, UiState, ViewModel>(), OnT
subViewParam.topMargin = ResUtil.getPixelSize(R.dimen.dp10)
subViewParam.bottomMargin = ResUtil.getPixelSize(R.dimen.dp10)
binding.llSubTaskContainer.addView(subTaskView, subViewParam)
mSubTaskViewList.add(subTaskView)
}
}
private fun updateSubTasksUI() {
val taskStateHelper = TaskManager.instance().boxTaskStatus()
val currentBoxIndex = taskStateHelper.getCurrentBoxIndex()
val subTaskStateList = taskStateHelper.getStatusBean().tasks[currentBoxIndex].tasks
if (subTaskStateList.size == mSubTaskViewList.size) {
mSubTaskViewList.forEachIndexed { index, view ->
view.updateUIByState(subTaskStateList[index], currentBoxIndex,index)
}
}
}
private fun updateTopBoxesUI() {
val taskStateHelper = TaskManager.instance().boxTaskStatus()

View File

@ -6,6 +6,8 @@ import android.view.LayoutInflater
import android.widget.LinearLayout
import com.ama.core.architecture.util.setOnClickBatch
import com.gamedog.vididin.databinding.BenefitTaskItemViewBinding
import com.gamedog.vididin.manager.TaskManager
import com.gamedog.vididin.manager.taskbeans.TaskStateBoxSub
class BenefitTaskItemView @JvmOverloads constructor(
@ -40,11 +42,17 @@ class BenefitTaskItemView @JvmOverloads constructor(
}
fun setProgressInfo(progress: String) {
mBinding.tvProgressInfo.text = progress
fun updateUIByState(subTaskState: TaskStateBoxSub, boxIndex: Int, subTaskIndex: Int) {
with (mBinding) {
val finishNum = if (subTaskState.finishedNum > subTaskState.required_count) subTaskState.required_count else subTaskState.finishedNum
val progressNum: Int = finishNum * 100 / subTaskState.required_count
//ivItemIcon.setImageResource(R.mipmap.icon_cash_s)
tvItemTitle.setText(TaskManager.instance().boxTaskStatus().getSubTaskHintStrRes(boxIndex, subTaskIndex))
progressBar.setProgress(progressNum)
tvProgressInfo.text = "($finishNum/${subTaskState.required_count})"
}
}
}

View File

@ -2,6 +2,7 @@ package com.gamedog.vididin.manager.helpers
import com.ama.core.architecture.util.DateUtil
import com.ama.core.architecture.util.SpUtil
import com.gamedog.vididin.R
import com.gamedog.vididin.main.fragments.task.BoxTaskRoot
import com.gamedog.vididin.manager.taskbeans.TaskStateBox
import com.gamedog.vididin.manager.taskbeans.TaskStateBoxRoot
@ -115,8 +116,58 @@ class BoxTaskHelper: BaseTaskHelper<TaskStateBoxRoot, BoxTaskRoot>() {
return waitClaimCashNum
}
fun getSubTaskHintStrRes(boxIndex: Int, subTaskIndex: Int): Int {
when (boxIndex) {
0-> {
when (boxIndex) {
0-> {
return R.string.box_subtask_hint_1_1
}
1-> {
return R.string.box_subtask_hint_1_1
}
2-> {
return R.string.box_subtask_hint_1_1
}
}
}
1-> {
when (boxIndex) {
0-> {
return R.string.box_subtask_hint_2_1
}
1-> {
return R.string.box_subtask_hint_2_1
}
2-> {
return R.string.box_subtask_hint_2_1
}
}
}
2-> {
when (boxIndex) {
0-> {
return R.string.box_subtask_hint_3_1
}
1-> {
return R.string.box_subtask_hint_3_1
}
2-> {
return R.string.box_subtask_hint_3_1
}
}
}
}
return 0
}
}

View File

@ -95,4 +95,14 @@
<string name="benefit">Benefícios</string>
<string name="box_subtask_hint_1_1">Assistir a 1 anúncio</string>
<string name="box_subtask_hint_1_2">Assistir a 3 vídeos</string>
<string name="box_subtask_hint_1_3">Concluir 1 check-in</string>
<string name="box_subtask_hint_2_1">Assistir a 15 anúncios</string>
<string name="box_subtask_hint_2_2">Assistir a 30 vídeos</string>
<string name="box_subtask_hint_2_3">Participar de 1 compra gratuita</string>
<string name="box_subtask_hint_3_1">Assistir a 30 anúncios</string>
<string name="box_subtask_hint_3_2">Assistir a 50 vídeos</string>
<string name="box_subtask_hint_3_3">Participar de 10 compras gratuitas</string>
</resources>