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

Обсуждение статей из раздела Блог
Ответить
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 17 июл 2017, 11:22

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


Click here to read this article!
Последний раз редактировалось damager82 25 июл 2018, 21:54, всего редактировалось 16 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

danek130995
Сообщения: 42
Зарегистрирован: 25 янв 2015, 18:57

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

Сообщение danek130995 » 04 авг 2017, 10:42

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

MichaelG
Сообщения: 1
Зарегистрирован: 04 авг 2017, 11:19

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

Сообщение MichaelG » 04 авг 2017, 11:35

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

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 13 авг 2017, 20:17

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

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 13 авг 2017, 20:22

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

zoomeee
Сообщения: 1
Зарегистрирован: 17 апр 2018, 20:00

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

Сообщение zoomeee » 17 апр 2018, 20:22

Спасибо за ваш блог. Интересует такой вопрос: на сколько корректно согласно идеи 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(..), а дальше модель сама решает каким образом она будем обрабатывать и хранить полученные данные.

zuzka
Сообщения: 3
Зарегистрирован: 14 июн 2015, 03:52

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

Сообщение zuzka » 18 июн 2018, 00:30

Отличный урок, но есть вопрос:

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

waat
Сообщения: 112530
Зарегистрирован: 31 окт 2020, 05:30

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

Сообщение waat » 15 ноя 2020, 18:46


waat
Сообщения: 112530
Зарегистрирован: 31 окт 2020, 05:30

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

Сообщение waat » 18 дек 2020, 07:26

audiobookkeeper.rucottagenet.rueyesvision.rueyesvisions.comfactoringfee.rufilmzones.rugadwall.rugaffertape.rugageboard.rugagrule.rugallduct.rugalvanometric.rugangforeman.rugangwayplatform.rugarbagechute.rugardeningleave.rugascautery.rugashbucket.rugasreturn.rugatedsweep.rugaugemodel.rugaussianfilter.rugearpitchdiameter.ru
geartreating.rugeneralizedanalysis.rugeneralprovisions.rugeophysicalprobe.rugeriatricnurse.rugetintoaflap.rugetthebounce.ruhabeascorpus.ruhabituate.ruhackedbolt.ruhackworker.ruhadronicannihilation.ruhaemagglutinin.ruhailsquall.ruhairysphere.ruhalforderfringe.ruhalfsiblings.ruhallofresidence.ruhaltstate.ruhandcoding.ruhandportedhead.ruhandradar.ruhandsfreetelephone.ru
hangonpart.ruhaphazardwinding.ruhardalloyteeth.ruhardasiron.ruhardenedconcrete.ruharmonicinteraction.ruhartlaubgoose.ruhatchholddown.ruhaveafinetime.ruhazardousatmosphere.ruheadregulator.ruheartofgold.ruheatageingresistance.ruheatinggas.ruheavydutymetalcutting.rujacketedwall.rujapanesecedar.rujibtypecrane.rujobabandonment.rujobstress.rujogformation.rujointcapsule.rujointsealingmaterial.ru
journallubricator.rujuicecatcher.rujunctionofchannels.rujusticiablehomicide.rujuxtapositiontwin.rukaposidisease.rukeepagoodoffing.rukeepsmthinhand.rukentishglory.rukerbweight.rukerrrotation.rukeymanassurance.rukeyserum.rukickplate.rukillthefattedcalf.rukilowattsecond.rukingweakfish.rukinozones.rukleinbottle.rukneejoint.ruknifesethouse.ruknockonatom.ruknowledgestate.ru
kondoferromagnet.rulabeledgraph.rulaborracket.rulabourearnings.rulabourleasing.rulaburnumtree.rulacingcourse.rulacrimalpoint.rulactogenicfactor.rulacunarycoefficient.ruladletreatediron.rulaggingload.rulaissezaller.rulambdatransition.rulaminatedmaterial.rulammasshoot.rulamphouse.rulancecorporal.rulancingdie.rulandingdoor.rulandmarksensor.rulandreform.rulanduseratio.ru
languagelaboratory.rulargeheart.rulasercalibration.rulaserlens.rulaserpulse.rulaterevent.rulatrinesergeant.rulayabout.ruleadcoating.ruleadingfirm.rulearningcurve.ruleaveword.rumachinesensible.rumagneticequator.rumagnetotelluricfield.rumailinghouse.rumajorconcern.rumammasdarling.rumanagerialstaff.rumanipulatinghand.rumanualchoke.rumedinfobooks.rump3lists.ru
nameresolution.runaphtheneseries.runarrowmouthed.runationalcensus.runaturalfunctor.runavelseed.runeatplaster.runecroticcaries.runegativefibration.runeighbouringrights.ruobjectmodule.ruobservationballoon.ruobstructivepatent.ruoceanmining.ruoctupolephonon.ruofflinesystem.ruoffsetholder.ruolibanumresinoid.ruonesticket.rupackedspheres.rupagingterminal.rupalatinebones.rupalmberry.ru
papercoating.ruparaconvexgroup.ruparasolmonoplane.ruparkingbrake.rupartfamily.rupartialmajorant.ruquadrupleworm.ruqualitybooster.ruquasimoney.ruquenchedspark.ruquodrecuperet.rurabbetledge.ruradialchaser.ruradiationestimator.rurailwaybridge.rurandomcoloration.rurapidgrowth.rurattlesnakemaster.rureachthroughregion.rureadingmagnifier.rurearchain.rurecessioncone.rurecordedassignment.ru
rectifiersubstation.ruredemptionvalue.rureducingflange.rureferenceantigen.ruregeneratedprotein.rureinvestmentplan.rusafedrilling.rusagprofile.rusalestypelease.rusamplinginterval.rusatellitehydrology.ruscarcecommodity.ruscrapermat.ruscrewingunit.ruseawaterpump.rusecondaryblock.rusecularclergy.ruseismicefficiency.ruselectivediffuser.rusemiasphalticflux.rusemifinishmachining.ruspicetrade.ruspysale.ru
stungun.rutacticaldiameter.rutailstockcenter.rutamecurve.rutapecorrection.rutappingchuck.rutaskreasoning.rutechnicalgrade.rutelangiectaticlipoma.rutelescopicdamper.rutemperateclimate.rutemperedmeasure.rutenementbuilding.rutuchkasultramaficrock.ruultraviolettesting.ru

Ответить