Android 让人卧槽的自定义view

项目中遇到了这样一个问题:
在这里插入图片描述
产品中存在多种药态:饮片、水丸、膏方、粉剂、蜜丸等等。

不同的药态对应不同的服用规则,规则中红色的数字是可以编辑的,且有默认值,服用规则有如下几种:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
切换药态时,服用规则同步切换。

1、普通思路:

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

这样有几种弊端:

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

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

2、自定义协议:

下图是这种方式的核心思路,试一试在只看这一行代码的情况下,能不能想到是如何做到的。
在这里插入图片描述
在每个可编辑的数字两侧添加“#”,自定义了一个协议。创建一个自定义ViewGroup,继承自FlexboxLayout(可以对ChildView自动换行),然后setValue:
在这里插入图片描述
使用这种方式,不仅大大省去了各种判断,而且扩展性强,代码具有非常强的可读性。

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

在这里插入图片描述
然后修改setValue的代码:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值