Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 24 сен 2018, 18:28

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 17 июл 2017, 11:22 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.

В этом посте описывается несложный пример MVP, без использования запутывающих интерфейсов и сложных библиотек. 




Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 25 июл 2018, 21:54, всего редактировалось 16 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 авг 2017, 10:42 

Зарегистрирован: 25 янв 2015, 18:57
Сообщений: 42
Благодарил (а): 9 раз.
Поблагодарили: 2 раз.
Спасибо за отличный материал!
В UsersActivity в методе onCreate() вызов метода presenter.loadUsers() скорее всего необязателен в данном случае, так как ему предшествует вызов метода init(), в конце которого вызывается presenter.viewIsReady(), который также внутри себя содержит вызов loadUsers();


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 авг 2017, 11:35 

Зарегистрирован: 04 авг 2017, 11:19
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Вопрос по import
Зачем делать import ru.startandroid.mvpsample.* и делать отдельныא packages
Если классы в томже приложении?
И откуда взять import ru.startandroid.mvpsample.R;?
Спасибо за уроки


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 авг 2017, 20:17 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
danek130995 писал(а):
Спасибо за отличный материал!
В UsersActivity в методе onCreate() вызов метода presenter.loadUsers() скорее всего необязателен в данном случае, так как ему предшествует вызов метода init(), в конце которого вызывается presenter.viewIsReady(), который также внутри себя содержит вызов loadUsers();

Верно, лишний вызов. Спасибо, что заметили!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 13 авг 2017, 20:22 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1400
Благодарил (а): 0 раз.
Поблагодарили: 75 раз.
MichaelG писал(а):
Вопрос по import
Зачем делать import ru.startandroid.mvpsample.* и делать отдельныא packages
Если классы в томже приложении?
И откуда взять import ru.startandroid.mvpsample.R;?
Спасибо за уроки

Если классы в разных пакетах, то необходимо прописывать импорт при использовании. А разные пакеты нужны, чтобы классы были удобно организованы. В таком небольшом приложении может быть еще и можно все классы в один пакет поместить. Но когда таких классов сотни и тысячи, уже не прокатит.
Более того, clean architecture подразумевает разделение классов не только по разным пакетам, но и по разным модулям. Но это уже другая история.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 17 апр 2018, 20:22 

Зарегистрирован: 17 апр 2018, 20:00
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Спасибо за ваш блог. Интересует такой вопрос: на сколько корректно согласно идеи MVP реализовывать так метод в UserPresenter (код из вашего примера):
Код: [ Загрузить ] [ Скрыть ]
  1. public void add() { 
  2.         UserData userData = view.getUserData(); 
  3.         if (TextUtils.isEmpty(userData.getName()) || TextUtils.isEmpty(userData.getEmail())) { 
  4.             view.showToast(R.string.empty_values); 
  5.             return; 
  6.         } 
  7.  
  8.         ContentValues cv = new ContentValues(2); 
  9.         cv.put(UserTable.COLUMN.NAME, userData.getName()); 
  10.         cv.put(UserTable.COLUMN.EMAIL, userData.getEmail()); 
  11.         view.showProgress(); 
  12.         model.addUser(cv, new UsersModel.CompleteCallback() { 
  13.             @Override 
  14.             public void onComplete() { 
  15.                 view.hideProgress(); 
  16.                 loadUsers(); 
  17.             } 
  18.         }); 
  19.     } 

Выходит так, что из-за того что передаем в модель объект класс ContentValue, мы становимся привязаны к конкретной реализации UsersModel. Тем самым нарушаем принцип о независимости реализаций модели, представления и презентора. Вместо этого можно было передавать значения имени и имейла в model.addUse(..), а дальше модель сама решает каким образом она будем обрабатывать и хранить полученные данные.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 июн 2018, 00:30 

Зарегистрирован: 14 июн 2015, 03:52
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Отличный урок, но есть вопрос:

к примемр: метод add в mvp - UserPresenter, в asynctask имеется вызов sleep, и далее идет вызов callback.onComplete где попытка обратиться к view. Если в момент паузы активность закроется и обнулит себя в презентере, проверка view отсутствует потому что из asynctask в onPostExecute при проверке callback срубит дальнейший вызов?


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB