android自定义视图是否应包含任何业务逻辑?

时间:2018-01-31 16:28:39

标签: android android-custom-view

扩展View或ViewGroup对象的自定义android视图是否包含与用于可视化内容的逻辑不同的逻辑?因此,例如,如果我创建一个包含某些UI表单的自定义视图,它是否应包含用于验证输入的任何逻辑?或者进行WS调用以填充其中的一些内容?

1 个答案:

答案 0 :(得分:0)

它可能各不相同,我会选择分离业务逻辑,因此您可以拥有一个完成工作的类,并告诉您的视图该做什么。

想象一下它是某种MVP

您的Presenter执行业务逻辑并通过合同(接口)告诉View它应该做什么。

为了给出更清晰的愿景,请遵循以下简单示例:

interface ViewContract {
    fun showErrorMsg()
    fun showSuccessMsg()
}

class View : ViewContract {
    override fun showErrorMsg() {
        TODO("show error")
    }

    override fun showSuccessMsg() {
        TODO("show success")
    }

}

class Presenter(val view: ViewContract) {
    fun validateForm(...some parameters...) {
        if (isNotValid) {// isValid
            view.showErrorMsg()
        } else {
            view.showSuccessMsg()
        }
    }
}