链接两个EditText框以进行单位转换

时间:2011-02-23 22:58:16

标签: android android-edittext

我正在尝试提供一种可扩展的方式将两个编辑文本框链接在一起以进行单位转换。用户可以在任一框中输入值,转换后的值将显示在另一个框中。

我通常会这样做,当编辑一个EditText时,它会得到输入,通过一个方法传递它来转换值并设置另一个字段的文本。

问题是我有很多这些对,每对用于转换不同类型的单位。如果我为每个框使用了TextWatcher,那么你可以看到哪些内容将会失控。

我考虑过扩展TextWatcher,以便我可以将EditText View及其合作伙伴的视图传递给它,但我不知道如何传递它需要使用哪种转换方法。我可以为每种转换分配一个int并使用一个开关,但这对我来说似乎不是一个好的解决方案。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我就是这样做的。创建一个类,比如PartnerEditTextInfo,它包含一个引用号和一个EditText对象。将此标记作为标记附加到应用中的每个EditText。将PartnerEditTextInfo中的editText设置为伙伴editText并具有唯一的引用号。因此,每个EditText都可以获得其合作伙伴。

扩展EditText类并覆盖onTextChanged()方法以调用公共转换方法(这可以是静态类静态方法)。您可以通过获取其文本已更改的editText的标记对象来获取伙伴editText。然后,根据哪些editText对(基于参考编号)进行更改,应用所需的转换公式,并在对中的editTexts上执行setText。

注意 - 你需要一种方法来确保你不会进入一个无限循环,有一些标志来区分对用户所做的editText文本和转换方法所做的文本的更改。