使用RxJava用ConfirmationDialog管理ViewState。

问题描述 投票:0回答:1
override fun submitIntent(): Observable<Triple<Long, Long, String>> {



        AlertOP.showPasswordVerificationDialog(requireContext(), object : GeneralDialogListener{
            override fun onPositiveClick() {

            }

            override fun onNegativeClick() {

            }
        })

        return binding.btnShareData.clicks().map {

            binding.data?.let {
                KeyboardOp.hide(requireActivity(), binding.etDataVolume)

                Triple(selectedCreditAccountID, selectedBundleCreditID, it.dataVolume)
            }
        }

    }

这里有一个问题,我想触发这个。

return binding.btnShareData.clicks().map {

            binding.data?.let {
                KeyboardOp.hide(requireActivity(), binding.etDataVolume)

                Triple(selectedCreditAccountID, selectedBundleCreditID, it.dataVolume)
            }
        }

只有当 onPositiveClick 是用 RxJava. 该 AlertOP.showPasswordVerificationDialog(... 是一个确认对话框。请大家帮忙,如果这个问题问得不好,请忽略。对不起。

android kotlin rx-java2
1个回答
0
投票

所以在做了一些搜索之后,我能够通过使用以下方法来解决这个问题 PublishSubjectRxJava下面是我更新的代码

private val verifyPasswordSubmitEventBridge = PublishSubject.create<Boolean>()

... 

override fun submitIntent(): Observable<Triple<Long, Long, String>> {
        binding.btnShareData.setOnClickListener {

            AlertOP.showPasswordVerificationDialog(
                requireContext(),
                object : GeneralDialogListener {
                    override fun onPositiveClick() {
                        verifyPasswordSubmitEventBridge.onNext(true)
                    }

                    override fun onNegativeClick() {
                        verifyPasswordSubmitEventBridge.onNext(false)
                    }
                })
        }
        return verifyPasswordSubmitEventBridge.filter { it }.map {
            binding.data?.let {
                KeyboardOp.hide(requireActivity(), binding.etDataVolume)

                Triple(selectedCreditAccountID, selectedBundleCreditID, it.dataVolume)
            }

        }
    }

现在,我能够实现所需的,在提交Intent时 ViewState 我现在可以显示一个确认 dialog 再往下 API 调用 RxJava

© www.soinside.com 2019 - 2024. All rights reserved.