Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Анонимный внутренний класс, реализующий интерфейс TextWatcher



Ранее в строке 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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...