Страница 1 из 1

Android MVP пример для начинающих. Без библиотек и интерфейсов.

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


Click here to read this article!

Re: MVP для начинающих. Без библиотек и интерфейсов.

Добавлено: 04 авг 2017, 10:42
danek130995
Спасибо за отличный материал!
В UsersActivity в методе onCreate() вызов метода presenter.loadUsers() скорее всего необязателен в данном случае, так как ему предшествует вызов метода init(), в конце которого вызывается presenter.viewIsReady(), который также внутри себя содержит вызов loadUsers();

Re: MVP для начинающих. Без библиотек и интерфейсов.

Добавлено: 04 авг 2017, 11:35
MichaelG
Вопрос по import
Зачем делать import ru.startandroid.mvpsample.* и делать отдельныא packages
Если классы в томже приложении?
И откуда взять import ru.startandroid.mvpsample.R;?
Спасибо за уроки

Re: MVP для начинающих. Без библиотек и интерфейсов.

Добавлено: 13 авг 2017, 20:17
damager82
danek130995 писал(а):Спасибо за отличный материал!
В UsersActivity в методе onCreate() вызов метода presenter.loadUsers() скорее всего необязателен в данном случае, так как ему предшествует вызов метода init(), в конце которого вызывается presenter.viewIsReady(), который также внутри себя содержит вызов loadUsers();
Верно, лишний вызов. Спасибо, что заметили!

Re: MVP для начинающих. Без библиотек и интерфейсов.

Добавлено: 13 авг 2017, 20:22
damager82
MichaelG писал(а):Вопрос по import
Зачем делать import ru.startandroid.mvpsample.* и делать отдельныא packages
Если классы в томже приложении?
И откуда взять import ru.startandroid.mvpsample.R;?
Спасибо за уроки
Если классы в разных пакетах, то необходимо прописывать импорт при использовании. А разные пакеты нужны, чтобы классы были удобно организованы. В таком небольшом приложении может быть еще и можно все классы в один пакет поместить. Но когда таких классов сотни и тысячи, уже не прокатит.
Более того, clean architecture подразумевает разделение классов не только по разным пакетам, но и по разным модулям. Но это уже другая история.

Re: Android MVP пример для начинающих. Без библиотек и интер

Добавлено: 17 апр 2018, 20:22
zoomeee
Спасибо за ваш блог. Интересует такой вопрос: на сколько корректно согласно идеи MVP реализовывать так метод в UserPresenter (код из вашего примера):

Код: Выделить всё

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

Re: Android MVP пример для начинающих. Без библиотек и интер

Добавлено: 18 июн 2018, 00:30
zuzka
Отличный урок, но есть вопрос:

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