Архитектура андроид приложений. Паттерны MVC, MVP

Содержание

Слайд 2

Паттерн MVC

Паттерн MVC

Слайд 3

Паттерн MVP Model-View-Presenter Паттерн MVP нашел большее применение в Android. MVP

Паттерн MVP
Model-View-Presenter

Паттерн MVP нашел большее применение в Android.
MVP имеет несколько

основных отличий от MVC:
Presenter управляет только одной View и взаимодействует с ней через специальный интерфейс.
View управляется только с помощью Presenter-а, а не отслеживает изменение Model.
Presenter получает все данные из Model (или из слоя данных), обрабатывает их в соответствии с требуемой логикой и управляет View. 
Слайд 4

View знает о Presenter; Presenter знает о View и Model (Repository); Model сама по себе;

View знает о Presenter;
Presenter знает о View и Model (Repository);
Model сама

по себе;
Слайд 5

Пример. Разработать Android приложение согласно варианту с использованием архитектуры «Модель-Представление-Презентер», выполняющее

Пример. Разработать Android приложение согласно варианту с использованием архитектуры «Модель-Представление-Презентер», выполняющее

ввод данных, вывод и редактирование в соответствии с вариантом. Для выполнения каждого пункта задания использовать отдельную Activity и модель. Организовать навигацию с использованием списковых представлений (ListView), при этом при помощи адаптера осуществить связывание с массивами данных.
Для выбора действия использовать меню.
Слайд 6

Слайд 7

Слайд 8

public interface IRepository { Pig get(String name); ArrayList getAll(); void add(Pig pig); void delete(Pig pig); }

public interface IRepository { Pig get(String name); ArrayList getAll(); void add(Pig

pig); void delete(Pig pig); }
Слайд 9

Слайд 10

Слайд 11

Слайд 12

Слайд 13

Слайд 14

Слайд 15

И т.д.

И т.д.

Слайд 16

Слайд 17

public interface IBigPigView { void showPigs(List pigs); }

public interface IBigPigView { void showPigs(List pigs); }

Слайд 18

Слайд 19

Слайд 20

Слайд 21

Слайд 22

Создание контекстного меню В контекстном меню не поддерживаются значки и быстрые

Создание контекстного меню

В контекстном меню не поддерживаются значки и быстрые клавиши.

Контекстное меню применимо к View, а меню к Activity. Поэтому в приложении может быть одно меню и несколько контекстных меню, например у каждого элемента TextView.

Существует два способа предоставления возможности контекстных действий:
в плавающем контекстном меню. При этом меню отображается в виде плавающего списка пунктов меню (похоже на диалоговое окно). Пользователи могут каждый раз выполнять контекстное действие только с одним элементом

Контекстное меню вызывается в Андроид длительным нажатием на каком-либо экранном компоненте. Обычно оно используется в списках, когда на экран выводится список однородных объектов

Слайд 23

В режиме контекстных действий. Этот режим является системной реализацией ActionMode, которая

В режиме контекстных действий. Этот режим является системной реализацией ActionMode, которая

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

Создание плавающего контекстного меню:

Слайд 24

Зарегистрировать все элементы для контекстного меню. Реализовать метод onCreateContextMenu() в активности

Зарегистрировать все элементы для контекстного меню.

Реализовать метод onCreateContextMenu() в активности

nameEditText=(EditText)findViewById(R.id.name); ageEditText=(EditText)findViewById(R.id.age); weightEditText=(EditText)findViewById(R.id.weight); this.registerForContextMenu(this.nameEditText); this.registerForContextMenu(this.ageEditText);

public void

onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate( R.menu.layout_context_menu,menu); }
Слайд 25

Когда зарегистрированное представление примет событие длительного нажатия, система вызовет метод onCreateContextMenu().

Когда зарегистрированное представление примет событие длительного нажатия, система вызовет метод onCreateContextMenu().

Именно здесь определяются пункты меню. Делается это обычно путем загрузки ресурса меню.

Реализовать метод onContextItemSelected(). Когда пользователь выбирает пункт меню, система вызывает этот метод, с тем чтобы можно было выполнить соответствующее действие:

Слайд 26

Слайд 27

Слайд 28

Реализация режима контекстных действий. Он представляет собой системную реализацию класса ActionMode.

Реализация режима контекстных действий.
Он представляет собой системную реализацию класса ActionMode.

Когда пользователь использует этот режим, выбирая элемент, вверху экрана открывается строка контекстных действий, содержащая действия, которые пользователь может выполнить с выбранными в данный момент элементами.

Режим контекстных действий отключается, а строка контекстных действий исчезает, когда пользователь снимет выделение со всех элементов, нажмет кнопку Назад или выберет действие Готово, расположенное с левой стороны строки