Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Ранее в строке 77 листинга был зарегистрирован объект billEditTextWatcher в качестве объекта - слушателя событий, порождаемых окном редактирования billEditText. В листинге ниже этот объект - слушатель создается с использованием анонимного внутреннего класса, реализующего интерфейс TextWatcher. В строке 173 листинга ниже billEditTextWatcher объявляется как объект интерфейса TextWatcher, т. е. неявно создается класс, наследующий этот интерфейс, все методы которого нужно реализовать. Что и делается в строках 175–203 приведенного ниже листинга:
99 // объект обработки событий, реагирующий на события billEditText
100 private TextWatcher billEditTextWatcher = new TextWatcher()
101 {
102 // вызывается после ввода пользователем числа
103 @Override
104 public void onTextChanged(CharSequence s, int start,
int before, int count)
105 {
107 // преобразование текста billEditText в double
Try
109 {
110 currentBillTotal = Double. parseDouble (s.toString());
111 } // завершение блока try
112 catch (NumberFormatException e)
113 {
114 currentBillTotal = 0.0; // по умолчанию в случае исключения
115 } // завершение блока catch
117 // обновление EditTexts, содержащих стандартные
// и пользовательские чаевые
118 updateStandard(); // обновление 10, 15 и 20% EditTexts
119 updateCustom(); // обновление EditTexts
// с пользовательскими чаевыми
120 } // конец метода onTextChanged()
122 @Override
123 public void afterTextChanged(Editable s)
124 {
125 } // конец метода afterTextChanged()
127 @Override
128 public void beforeTextChanged(CharSequence s, int start,
int count, int after)
129 {
130 } // завершение метода beforeTextChanged
131 }; // завершение billEditTextWatcher
Метод onTextChanged (строки 177–193) вызывается в случае изменения текста, отображаемого компонентом billEditText. Этому методу передаются четыре аргумента. В нашем случае используется лишь аргумент s типа CharSequence, который содержит копию текста billEditText. Другие аргументы указывают на то, что текст, количество символов которого определено аргументом count, начинающийся в позиции, указанной аргументом start, заменил фрагмент прежнего текста, длина которого определяется аргументом before.
В строке 183 выполняется преобразование текста, введенного пользователем в компонент billEditText, в тип double. В строке 191 вызывается метод updateStandard(), который выполняет обновление компонентов EditText 10%, 15% и 20%, включающих сумму чаевых и итоговую сумму по счету (включая сумму чаевых). В строке 192 вызывается метод updateCustom(), который обновляет компоненты EditText, включающие пользовательские чаевые и итоговый счет. При этом используется процентная ставка настраиваемых чаевых, которая берется из SeekBar.
В данной реализации не используются другие методы интерфейса TextWatcher. Поэтому эти методы переопределены пустыми методами (строки 195–203) для соответствия условиям реализации интерфейса.
Дата публикования: 2015-10-09; Прочитано: 214 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!