Слухання моделі – програмування Android

&nbsp

Під фреймворці користувача інтерфейсу Android повсюдно застосовується патерн установки обробників Хоча в попередніх прикладах ми працювали тільки з видами Button, багато інших віджети Android також визначають слухачі Клас View визначає кілька повсюдно використовуваних подій і слухачів, скоро ми докладно розглянемо їх Інші класи при цьому визначають інші, спеціалізовані типи подій і надають обробники для цих подій Такі обробники мають значення тільки в рамках зазначених класів Це стандартна ідіома, що дозволяє клієнтам спеціально налаштовувати (кастомизировать) поведінка віджету, не утворюючи від нього підкласів

Такий патерн також відмінно підходить для того, щоб програма могла обробляти власні зовнішні, асинхронні дії Якщо ви, наприклад, відповідаєте на зміну стану, що відбулося на віддаленому сервері, або оновлюєте інформацію, яка отримана від служби визначення місця розташування, то додаток може визначити на ці випадки власні події і обробники, щоб клієнти могли реагувати на такі події

Досі приклади були елементарними і обходили деякі гострі кути У цих прикладах продемонстровано зєднання виду і контролера, але в них не було справжніх моделей (Зокрема, у прикладі 74 використовувалася рядок String, приймаємо реалізацією EditText в якості моделі) Далі ми зробимо невеликий відступ і побудуємо справжню модель, якою можна буде користуватися

Два наступних класу, показаних в прикладі 76, складають модель, яка буде підтримувати розширення для демонстраційного додатку Ці класи забезпечують можливість зберігання списку обєктів, кожен з яких має координати х і у, володіє кольором і розміром Крім того, вони надають спосіб для реєстрації слухача і інтерфейс, реалізовувати який повинен слухач В основі цих прикладів лежить звичайна модель слухача, тому приклади досить прості

Приклад 76 Модель Dots

Додатково до цієї моделі вивчимо і наступний приклад, в якому буде показаний бібліотечний віджет DotView, використовуваний для перегляду даної моделі Його завдання – отрісовать точки, надані моделлю Вони повинні мати потрібний колір і правильно розташовуватися Повний вихідний код для даного прикладу наведено на сайті книги

У прикладі 77 показано нове демонстраційне додаток, до якого тепер додані модель і вигляд

Приклад 77 Демонстраційна версія Dots

Ось коментарі до фрагментів коду, відзначеним цифрами

Новий DotView додається поверх макета, отриманого з XML-визначення

Зворотні дзвінки onClіckListener додаються до кнопок Red (Червоний) і Green (Зелений) Ці обробники подій відрізняються від обробників, наведених у попередньому прикладі, тільки тим, що тут їх поведінку опосередковано локальним методом makeDot Цей новий метод створює точку (елемент 5)

Виклик makeDot здійснюється в onClick (тоді виклик відбувається при натисканні кнопки)

Найбільш суттєва зміна в прикладі відбувається там, де модель підключається до виду При цьому для установки dotsChangeListener використовується зворотний виклик Коли модель змінюється, викликається даний новий слухач Він записує координати х і у останньої точки відповідно в ліве і праве текстові поля і надсилає запит DotView, щоб цей вид перемалював себе (виклик invalidate)

Це визначення makeDot Даний новий метод створює точку, переконується, що вона знаходиться в межах кордонів DotView, і додає її до моделі Крім того, в даному випадку колір точки можна вказати як параметра

На рис 75 показано, як виглядає працює додаток

Якщо натиснути кнопку Red (Червоний), то в DotView зявиться нова червона крапка Якщо натиснути Green (Зелений), виникне зелена Текстові поля містять координати останній доданій точки

Рис 75 Запуск демонстраційного додатка Dots

Базова структура прикладу 72 і раніше пізнавана, але ми бачимо і деякі розширення

Ось ланцюг подій, які відбуваються після натискання, наприклад, кнопки Green (Зелений)

1 При натисканні кнопки викликається її onClickHandler

2 Через це відбувається виклик makeDot з колірним аргументом Col or GREEN Метод makeDot генерує випадкові координати і додає нову зелену крапку (Dot) в модель в цих координатах

3 Коли модель оновиться, вона викликає onDotsChangeListener

4 Слухач оновлює значення текстових видів і запрошувати перерисовку DotView

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*