Android MVP пример для начинающих. Без библиотек и интерфейсов.
Android MVP пример для начинающих. Без библиотек и интерфейсов.
В этом посте описывается несложный пример MVP, без использования запутывающих интерфейсов и сложных библиотек.
Click here to read this article!
Click here to read this article!
Последний раз редактировалось damager82 25 июл 2018, 21:54, всего редактировалось 16 раз.
-
- Сообщения: 42
- Зарегистрирован: 25 янв 2015, 18:57
Re: MVP для начинающих. Без библиотек и интерфейсов.
Спасибо за отличный материал!
В UsersActivity в методе onCreate() вызов метода presenter.loadUsers() скорее всего необязателен в данном случае, так как ему предшествует вызов метода init(), в конце которого вызывается presenter.viewIsReady(), который также внутри себя содержит вызов loadUsers();
В UsersActivity в методе onCreate() вызов метода presenter.loadUsers() скорее всего необязателен в данном случае, так как ему предшествует вызов метода init(), в конце которого вызывается presenter.viewIsReady(), который также внутри себя содержит вызов loadUsers();
Re: MVP для начинающих. Без библиотек и интерфейсов.
Вопрос по import
Зачем делать import ru.startandroid.mvpsample.* и делать отдельныא packages
Если классы в томже приложении?
И откуда взять import ru.startandroid.mvpsample.R;?
Спасибо за уроки
Зачем делать import ru.startandroid.mvpsample.* и делать отдельныא packages
Если классы в томже приложении?
И откуда взять import ru.startandroid.mvpsample.R;?
Спасибо за уроки
Re: MVP для начинающих. Без библиотек и интерфейсов.
Верно, лишний вызов. Спасибо, что заметили!danek130995 писал(а):Спасибо за отличный материал!
В UsersActivity в методе onCreate() вызов метода presenter.loadUsers() скорее всего необязателен в данном случае, так как ему предшествует вызов метода init(), в конце которого вызывается presenter.viewIsReady(), который также внутри себя содержит вызов loadUsers();
Re: MVP для начинающих. Без библиотек и интерфейсов.
Если классы в разных пакетах, то необходимо прописывать импорт при использовании. А разные пакеты нужны, чтобы классы были удобно организованы. В таком небольшом приложении может быть еще и можно все классы в один пакет поместить. Но когда таких классов сотни и тысячи, уже не прокатит.MichaelG писал(а):Вопрос по import
Зачем делать import ru.startandroid.mvpsample.* и делать отдельныא packages
Если классы в томже приложении?
И откуда взять import ru.startandroid.mvpsample.R;?
Спасибо за уроки
Более того, clean architecture подразумевает разделение классов не только по разным пакетам, но и по разным модулям. Но это уже другая история.
Re: Android MVP пример для начинающих. Без библиотек и интер
Спасибо за ваш блог. Интересует такой вопрос: на сколько корректно согласно идеи MVP реализовывать так метод в UserPresenter (код из вашего примера):
Выходит так, что из-за того что передаем в модель объект класс ContentValue, мы становимся привязаны к конкретной реализации UsersModel. Тем самым нарушаем принцип о независимости реализаций модели, представления и презентора. Вместо этого можно было передавать значения имени и имейла в model.addUse(..), а дальше модель сама решает каким образом она будем обрабатывать и хранить полученные данные.
Код: Выделить всё
public void add() {
UserData userData = view.getUserData();
if (TextUtils.isEmpty(userData.getName()) || TextUtils.isEmpty(userData.getEmail())) {
view.showToast(R.string.empty_values);
return;
}
ContentValues cv = new ContentValues(2);
cv.put(UserTable.COLUMN.NAME, userData.getName());
cv.put(UserTable.COLUMN.EMAIL, userData.getEmail());
view.showProgress();
model.addUser(cv, new UsersModel.CompleteCallback() {
@Override
public void onComplete() {
view.hideProgress();
loadUsers();
}
});
}
Re: Android MVP пример для начинающих. Без библиотек и интер
Отличный урок, но есть вопрос:
к примемр: метод add в mvp - UserPresenter, в asynctask имеется вызов sleep, и далее идет вызов callback.onComplete где попытка обратиться к view. Если в момент паузы активность закроется и обнулит себя в презентере, проверка view отсутствует потому что из asynctask в onPostExecute при проверке callback срубит дальнейший вызов?
к примемр: метод add в mvp - UserPresenter, в asynctask имеется вызов sleep, и далее идет вызов callback.onComplete где попытка обратиться к view. Если в момент паузы активность закроется и обнулит себя в презентере, проверка view отсутствует потому что из asynctask в onPostExecute при проверке callback срубит дальнейший вызов?