Связывание двух полей EditText для преобразования единиц - PullRequest
0 голосов
/ 24 февраля 2011

Я пытаюсь найти масштабируемый способ связать два текстовых поля редактирования для преобразования единиц измерения. Пользователь вводит значение в одно из полей, а преобразованное значение отображается в другом.

Обычно я делаю так, чтобы при редактировании одного EditText он получал входные данные, передавал их через метод для преобразования значения и устанавливал текст другого поля.

Проблема в том, что у меня много этих пар, и каждая пара используется для преобразования единиц разного вида. Если бы я использовал TextWatcher для каждого поля, вы можете увидеть, где это может выйти из-под контроля.

Я думал о расширении TextWatcher, чтобы я мог передать ему представление EditText и представление его партнера, но я не уверен, как передать его, какой метод преобразования необходимо использовать. Я мог бы назначить int каждому виду преобразования и использовать переключатель, но это не кажется мне хорошим решением.

Есть ли лучший способ?

1 Ответ

0 голосов
/ 24 февраля 2011

Вот как бы я это сделал. Создайте класс, скажем PartnerEditTextInfo, который содержит ссылочный номер и объект EditText. Прикрепите это в качестве тега к каждому EditText в вашем приложении. Установите editText в PartnerEditTextInfo для партнера editText и имейте уникальный ссылочный номер. Таким образом, каждый EditText может овладеть своим партнером.

Расширьте класс EditText и перезапустите метод onTextChanged (), чтобы вызвать общий метод преобразования (это может быть статический метод статического класса). Вы можете получить партнерский editText, получив объект тега editText, текст которого был изменен. Затем, основываясь на том, какие пары editText (на основе ссылочного номера) изменены, примените требуемую формулу преобразования и выполните setText для обоих editTexts в паре.

Внимание. Вам нужен способ убедиться, что вы не попадете в бесконечный цикл, есть какой-то флаг, чтобы различать изменения в тексте editText, сделанные пользователем и сделанные методом преобразования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...