美文网首页自定义控件
Android 重构:自定义协议

Android 重构:自定义协议

作者: prime_809c | 来源:发表于2020-09-03 15:53 被阅读0次

    项目中遇到了这样一个问题:

    产品中存在多种药态:饮片、水丸、膏方、粉剂、蜜丸等等。

    不同的药态对应不同的服用规则,规则中红色的数字是可以编辑的,且有默认值,服用规则有如下几种:

    切换药态时,服用规则同步切换。

    1、普通思路:

    创建一个布局文件xml,观察规则,添加 5 个TextView和 4 个EditView,就可以覆盖所有的可能性,然后在每个class中单独赋值即可。

    这样有几种弊端:

    a,代码量大:需要判断每个药态,然后给每个View进行赋值。

    b,灵活性低:如果产品端准备加一个药态,需要添加判断条件。

    2、自定义协议:

    下图是这种方式的核心思路,试一试在只看这一行代码的情况下,能不能想到是如何做到的。

    在每个可编辑的数字两侧添加“#”,自定义了一个协议。创建一个自定义ViewGroup,继承自FlexboxLayout(可以对ChildView自动换行),然后setValue:

    使用这种方式,不仅大大省去了各种判断,而且扩展性强,代码具有非常强的可读性。

    对协议还可以依据产品规则进行扩充,比如在项目中,需要对剂量的输入进行监听,我们可以这样做

    然后修改setValue的代码:

    相关文章

      网友评论

        本文标题:Android 重构:自定义协议

        本文链接:https://www.haomeiwen.com/subject/uixosktx.html