Size: a a a

Moxy – MVP библиотека под Android

2018 December 14

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Yura Shinkarev
Я бы делал презентер для активити.
Ведь это сейчас у тебя табы, а потом ещё что-то может быть.
Соот-но презентер тебе говорит, что отобрази коллекцию.
И ты её отображаешь в виде табов.
Я же как понимаю у тебя не слишком сложная логика на табе (но видимо всё равно что-то подгружается)?
у меня и для активити есть презентер и для табов.. что то запутался я с этими табами.  Активти только говорит покажи первый таб, покажи второй таб.. А вот фрагмент в зависимости от того, какой он по счету , обращается в БД . В базе вопросы, варианты ответов и так далее. В зависимости от того сколько вариантов ответов, в фрагменте динамически создаются radioGroup с RadioButton . Т.е. по радиокнопке на каждый вариант ответа.  Я это к чему пишу: id кнопок в макете нет, значит автоматически их состояние сохранено не будет. По дефолту, если я прописал кнопки в xml, у них атрибут saveEnabled = "true" и после поворота экрна и состояние прежнее и никаких листнеров не вызывается.   Я вот думаю как мне может помочь мокси с тем, чтобы запомнить это состояние.
источник

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
я реализовал вариант такой: сохраняю в активити массив и там запоминаю, на каком табе какой ответ выбран. А сами данные (вопросы, варианты ответов) хранятся в презентере фрагмента.
источник

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Все равно неудобно всё это сохранять в презентере активности. Нужно сохранить, то что кнопка была нажата, что текст уже введен и все эти вьюхи созданы динамически.  Чтобы во вьюСтате сохранились команды, надо даже клик по кнопке делать с разрешения презентера.
источник

AA

Alidibir Akhbulatov in Moxy – MVP библиотека под Android
Turalllb Turalll
Все равно неудобно всё это сохранять в презентере активности. Нужно сохранить, то что кнопка была нажата, что текст уже введен и все эти вьюхи созданы динамически.  Чтобы во вьюСтате сохранились команды, надо даже клик по кнопке делать с разрешения презентера.
Обычно итак каждый клик в презентер идет, а он уже решает, что с ним делать
источник
2018 December 15

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Alidibir Akhbulatov
Обычно итак каждый клик в презентер идет, а он уже решает, что с ним делать
Да согласен, я немного не то сказал. Просто  слишком кода много получается. Вот по клику на кнопку, мне нужно, чтобы установился текст и удалилась эта нажатая кнопка. Вот приходит в onClick эта view , я могу легко  написать view.setVisibility(View.GONE);  и удалить кнопку. А мне приходится передавать её в другой метод, который будет вызван через презентер. Т.е. в поле экземпляра приходится кнопку держать.  Архитектуру без жертв не напишешь на андроид)  И что меня запутало: я думал , что если мокси хранит презентер таба, то при повороте экрана, активити которая хранит табы будет пересоздаваться , а вместе этим табы потеряют свои презентеры, как будто был сделан выход из табов. Но архитектура TabLayout оказалась иная.
источник

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Alidibir Akhbulatov
Обычно итак каждый клик в презентер идет, а он уже решает, что с ним делать
Вообще я тут имел ввиду вот что: Выбираю одну из радиоКнопок, срабатывает  onCheckedChanged(RadioGroup radioGroup, int i)  . Я ничего не делаю в активности, говорю презентеру что выбрали такую то кнопку. Презентер выполняет действия.  ТЕперь когда я переверну экран, презентер свою команду, которая в очереди во ВьюСтате выполнит. А кто поставит точку на экране на радиоКнопке, показывая тем самым что она выбрана?
источник

AA

Alidibir Akhbulatov in Moxy – MVP библиотека под Android
Так вьюшки, у которых указан id, сохраняют ведь свое состояние после поворота экрана, например, текст из EditText
источник

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Alidibir Akhbulatov
Так вьюшки, у которых указан id, сохраняют ведь свое состояние после поворота экрана, например, текст из EditText
у моих вьюх нет id. Вот в этом и дело . В мокси не хватает механизма, который помог бы состояние вьюх без id сохранять. Но я уже немного понял , как его можно добавить.
источник

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
вернее id есть, но при повороте экрана, вьюхи заново создаются и получают новые id.  Короче говоря, они динамически создаются. Т.к. я взарание не знаю сколько вариантов ответов у меня будет.
источник

DS

Dzmitry Sobolevsky in Moxy – MVP библиотека под Android
Turalllb Turalll
Вообще я тут имел ввиду вот что: Выбираю одну из радиоКнопок, срабатывает  onCheckedChanged(RadioGroup radioGroup, int i)  . Я ничего не делаю в активности, говорю презентеру что выбрали такую то кнопку. Презентер выполняет действия.  ТЕперь когда я переверну экран, презентер свою команду, которая в очереди во ВьюСтате выполнит. А кто поставит точку на экране на радиоКнопке, показывая тем самым что она выбрана?
сделайте свою вьюмодель, формируйте ее в презентере, передавайте во вью. если у вас опросник с типовыми экранами (например 1экран = вопрос 1 + ответ текст и 2экран = вопрос 2 + ответ радио бокс, то можно свою вьюмодель для каждого типа экрана). например
class SomeQuestion{
String question;
AnswerType type = AnswerType.AnswerText;
}
и в презентере вызывайте метод вью:
//стратегия AddToEndSingleStrategy
getViewState().prepare(question);
источник

DS

Dzmitry Sobolevsky in Moxy – MVP библиотека под Android
для списка радио сделайте List<String> answers. для других еще что-нибудь.
источник

DS

Dzmitry Sobolevsky in Moxy – MVP библиотека под Android
можно замарочится и передавать List<IQuestion> и во вью динамически все делать. Флаги(enabled, checked, visibility) во вью передавайте через созданную модель. А через метод презентера, например onCheckBoxChanged(int position, boolean checked). возвращайте изменения.
источник

DS

Dzmitry Sobolevsky in Moxy – MVP библиотека под Android
для вьюшек можно назначать теги. теги же можно обратно передавать в презентер вместо position. по такой задаче с фантазией можно много вариантов придумать как сделать.
источник

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Dzmitry Sobolevsky
для вьюшек можно назначать теги. теги же можно обратно передавать в презентер вместо position. по такой задаче с фантазией можно много вариантов придумать как сделать.
Вариантов много.  Я хотел правильный, чтобы архитектура чище оставалась.  А так я просто сделал так, чтобы презентер вызывал метод, где дополнительно чекаются вьюхи.  И всё что мне нужно оказывается в очереди команд.
источник

TT

Turalllb Turalll in Moxy – MVP библиотека под Android
Dzmitry Sobolevsky
можно замарочится и передавать List<IQuestion> и во вью динамически все делать. Флаги(enabled, checked, visibility) во вью передавайте через созданную модель. А через метод презентера, например onCheckBoxChanged(int position, boolean checked). возвращайте изменения.
Ну вот это впринципе я и делаю.
источник
2018 December 20

AE

Alexandr Ermolaenko in Moxy – MVP библиотека под Android
Доброе утро всем! Подскажите, плиз. Есть фрагмент, обрабатывающий поворот экрана через Moxi, все работает прекрасно. Но если при повороте экрана этому фрагменту делать replace в fragnentmanager'e, то в таком случае у презентера при каждом повороте зовется onFirstViewAttach(). Как это можно исправить?
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
не реплейсить =))
источник

AE

Alexandr Ermolaenko in Moxy – MVP библиотека под Android
=)
источник

YS

Yuri Shmakov in Moxy – MVP библиотека под Android
если реплейсите, значит во фрагмент менеджер попадает новый фрагмент, для которого ещё нет презентера. значит для него создаётся презентер, и у него естественно вызывается этот метод
источник

AE

Alexandr Ermolaenko in Moxy – MVP библиотека под Android
не реплейсить не получится. хочу чтобы в лендскейпе на экране сразу было видно 2 фрагмента рядом, а при повороте только один
источник