Страницы

Поиск по вопросам

пятница, 27 декабря 2019 г.

Android MVP взаимодействие presenter и adapter

#java #android #mvp


Подскажите пожалуйста, более правильный вариант:


Presenter и адаптер содержат ссылку на List. Presenter добавляет, удаляет, изменяет
items, сообщаяет item position во view, view просто обновляет адаптер. (notifySetDataChanges)
Только адптер содержит ссылку на List и сам добавляет, удаляет, изменяет items по
команде от view. Presenter передает во view полноценный объект и команду что нужно
сделать, добавить, удалить или изменить.


Или есть какие то другие классические варинты?
    


Ответы

Ответ 1



Самое важно в этом вопросе является : используется ли в вашем проекте Immutable objects. Если нет, то изменение объекта в Presenter списке будет отображено и в списке Adapter. Если да, то необходимо всегда полностью заменять объекты при их изменении. Второй вариант удобно использовать в паре с SortedList и DiffUtil. Эти классы упрощают работу со списком в RecyclerView. DiffUtil позволяет чётко определить изменения в списке, и уведомить именно об этих изменениях. На основе этого решения Presenter говорит View: deleteElement(Element e); insertNewElement(Element e); updateElement(Element e); insertNewElements(List elements) // Используй DiffUtil для этого случая Получается, что в Adapter и Presenter будут иметь разные ссылки на коллекции, но одни ссылки на объекты этих коллекция. Вся логика определения изменения исходного списка ложиться на Presenter. Он должен определить изменения и сообщить View об этом: deleteElement(int position); updateElement(int position); insertNewElements(List elements, int position); insertNewElement(Element e, int position);

Комментариев нет:

Отправить комментарий