@android_ru

Страница 1947 из 3205
Andrey
30.08.2017
20:44:04
нет... в сервесе крутиться цикл, в нужный момент отправляю интент
не знаю чем помочь. можно пробовать отправлять старт активити ?

Anton
30.08.2017
20:45:52
Вот не хотелось бы делать его элементом recyclerView тк на этот recyclerView и его адаптер в частности нагружено много функционала (itemtouchhelper со всякими плюшками, свайпы, перемещения и прочее). Так же сам список может фильтроваться и всячески сортироваться. И наконец, список может содержать несколько видов VH. И, как вы понимаете, во всех тех фичах, что я описал, придется писать такой код, который постоянно учитывает, что первым элементом идёт header, и что не надо его в случае чего "задевать". Я уже не говорю о том, что элементы могут располагаться по особенному, в несколько столбцов с помощью кастомного layoutManagera. Ну и в качестве кульминации я лично считаю, что когда элемент списка i=0 управляет элементами I+1...N - это странный архитектурный подход

Andrey
30.08.2017
20:47:25
Вот не хотелось бы делать его элементом recyclerView тк на этот recyclerView и его адаптер в частности нагружено много функционала (itemtouchhelper со всякими плюшками, свайпы, перемещения и прочее). Так же сам список может фильтроваться и всячески сортироваться. И наконец, список может содержать несколько видов VH. И, как вы понимаете, во всех тех фичах, что я описал, придется писать такой код, который постоянно учитывает, что первым элементом идёт header, и что не надо его в случае чего "задевать". Я уже не говорю о том, что элементы могут располагаться по особенному, в несколько столбцов с помощью кастомного layoutManagera. Ну и в качестве кульминации я лично считаю, что когда элемент списка i=0 управляет элементами I+1...N - это странный архитектурный подход
Все что вы перечислили это просто вопрос хорошей реализации. И все. Если у вас адаптер в который вы передаете делегаты, которые реализуют что вы хотите, вы можете легко управлять и декорировать ваш список. Ровно также просто управлять разными массивами данных, отображать их, прятать, и нотифаить

Вот не хотелось бы делать его элементом recyclerView тк на этот recyclerView и его адаптер в частности нагружено много функционала (itemtouchhelper со всякими плюшками, свайпы, перемещения и прочее). Так же сам список может фильтроваться и всячески сортироваться. И наконец, список может содержать несколько видов VH. И, как вы понимаете, во всех тех фичах, что я описал, придется писать такой код, который постоянно учитывает, что первым элементом идёт header, и что не надо его в случае чего "задевать". Я уже не говорю о том, что элементы могут располагаться по особенному, в несколько столбцов с помощью кастомного layoutManagera. Ну и в качестве кульминации я лично считаю, что когда элемент списка i=0 управляет элементами I+1...N - это странный архитектурный подход
Адаптер и ресайклер вью это компоненты андроида, с довольно неплохим и мощным АПИ, я бы советовал принимать это как + и использовать удобства, нежели принимать как минус и пытаться обойти это )

Google
Anton
30.08.2017
20:49:54
Не спорю) но смотрите, разные эти плюшки, навешанные вокруг адаптера и recyclerView - это как правило разные классы, и каждый должен знать об особенностях списка, а точнее, что первым элементом списка является header. Вам не кажется что получится размазанная логика?

Anton
30.08.2017
20:51:09
Хотя я пока общался с вами примерно у себя в голове сложил архитектурную картинку, как именно эту логику можно держать в "одном месте"

Делегат здесь именно то что нужно

То есть, подводя черту, вы за то, чтобы header все таки был частью списка?

Andrey
30.08.2017
20:52:44
То-есть в просто создаете делегат-класс, который реализует делегат-интерфейс(createItem(layoutId), bindItem(T data)). Реализуете свой делегат, передаете его в конструктор адаптера, тот в методах вызывает методы делегата, а делегат уже управляет созданим view-holdera и тд. Если создать внутри адаптера-фабрику делегатов, можно миксить разные view-type передавая разные делегаты

По-моему даже статья была такая ?

http://hannesdorfmann.com/android/adapter-delegates

Anton
30.08.2017
20:54:36
Спасибо огромное за статью, пошла мимо меня)

Поставил к прочтению

Кстати, если поднимать тему adapter hell, то я избавляю адаптер от перегруженного кода другим способом. У меня вся логика во вью холдерах. С одним паблик методом onBind() который вызывается внутри адаптеровского onBindViewHolder. И да, у вью холдера у меня как правило свой презентер, внутри которого свои интерактры и тд. Уже давно иду по такому пути и радуюсь от гибкости. Никакого прокидывания управления через главный презентер активити! Никаких лишних интерфейсов. Красота)

Google
Andrey
30.08.2017
21:01:52
И я думаю, что в статье таки есть ответ на ваш вопрос. Там у человека получается вью-тайп по делегат-менеджеру, и можно управлять нужными данными из адаптера

все легко, гибко, просто

Artem
30.08.2017
21:05:09
в Thread нельзя вызывать stop(), как же его остановить\уничтожить? есть какой-то заменитель чтоб в него ранебл передать и особо ничего не переписывать? (AsyncTask не катит нужно много рас перезапускать поток)

Anton
30.08.2017
21:08:45
Я попробую. Но и вы подумайте хорошо над моим подходом. Представьте что в вас список из каких то сложных вью, внутри которых могут изменяться данные, летящие, например, по вебсокету. Каждый раз когда что то изменится, ваш презентер должен будет пробежаться по списку, отдать адаптеру команду "обнови то то и то то", и адаптер должен будет найти у себя нужный viewHolder и вызвать у него соответствующие методы на обновление контента. Потом бизнес логика растет, количество изменяемых данных увеличивается, и вы постоянно плодите методы главного презентера, и мучительно тащите всё это до адаптера и до вью холдеров. А в моем решении есть такой плюс, что адаптер один разок забиндился - и далее сам отвечает за свой стейт. Сам куда надо подписывается и сам слушает все интересующие его изменения

Andrey
30.08.2017
21:11:03
Я попробую. Но и вы подумайте хорошо над моим подходом. Представьте что в вас список из каких то сложных вью, внутри которых могут изменяться данные, летящие, например, по вебсокету. Каждый раз когда что то изменится, ваш презентер должен будет пробежаться по списку, отдать адаптеру команду "обнови то то и то то", и адаптер должен будет найти у себя нужный viewHolder и вызвать у него соответствующие методы на обновление контента. Потом бизнес логика растет, количество изменяемых данных увеличивается, и вы постоянно плодите методы главного презентера, и мучительно тащите всё это до адаптера и до вью холдеров. А в моем решении есть такой плюс, что адаптер один разок забиндился - и далее сам отвечает за свой стейт. Сам куда надо подписывается и сам слушает все интересующие его изменения
Просто это уже тема архитектуры. Я стараюсь придерживать клин-арха, а там вроде так не делают. Я подумаю над вашей идеей, и задам позже вопросы

Anton
30.08.2017
21:11:09
А презентер только лишь занимается повеностным менеджментом списка - сеттит его в адаптер, добавляет туда элементы, и тд. Он не занимается поддержкой актуальности контента внутри элементов списка

Поверхностным*

Приятно было пообщаться, спокойной ночи)

Gleb
30.08.2017
21:14:13
Не а я не понял.... чо за культ поклонения дорфману??? (вортон уже не в моде видимо) кто-то хоть сможет объяснить??? если человек - галимый автор-иконописец - да, возможно его песни сладки но где там реальная рабочая практика не понятно))) и наверное никто никогда и не узнает

ладно.... сорян просто ... давно этот вопрос мучал

Gleb
30.08.2017
21:15:38
ничего не понял, но боль прочувствовал ?
?? За движениие простых пацанов

Это вы относительно чего
Относительно "ДОРФМАНА"

Artem
30.08.2017
21:16:17
Хаха)

Gleb
30.08.2017
21:16:26
Artem
30.08.2017
21:31:01
то как на счет замены Thread которую можно остановить?

или..почему не работает interrupt() ?

Google
Andrey
30.08.2017
21:32:28
или..почему не работает interrupt() ?
вам стоит почитать какую-нибудь статью про многопоточность в джава

рекомендую технострим мейлру "Многопоточность в джава"

Stan
30.08.2017
21:46:08


Artem
30.08.2017
21:51:15
вам стоит почитать какую-нибудь статью про многопоточность в джава
наверное это именно тот совет который я хотел услышать)) немного почитал...пофиксил)

Boris
31.08.2017
02:46:27
Знает кто , есть ли метод который может указать порядок данных в интенте? Оформить его к примеру через запятую или с новой строки

Алексей
31.08.2017
03:09:41
Распечатать содержание Bundle?

Boris
31.08.2017
03:21:00
Нет, вот к примеру есть name и description. Он зас пишет n1,d1,n2,d2 . А мне надо отредактировать в n1-d1 <\br> n2-d2

Просто в более читабельный вид, так как эти данные в интенте передаются как текстовое сообщение. А сейчас набор данных через запятую

Алексей
31.08.2017
03:25:20
Кто "щас пишет"? Что вы имеете в виду под "данными в интенте"? Если задача превратить строку одного формата в строку другого формата - сделайте split по запятым, а потом собирайте обратно как хотите.

@
31.08.2017
03:40:19
Хм... странный андроид, deprecated onAttach(Activity a) работает, а onAttach(Context c) нет

Tipok
31.08.2017
03:45:40
есть onQueryTextChange(String newText) у MaterialSearchView, допустим есть там текст какой-то, но при перевороте телефона и пересоздании всего заново, сначала приходит пустая строка, а потом уже строка с реальным текстом. Почему отправляет пустую строку, как избежать этого события?

@
31.08.2017
03:47:12
проверку на empty() lol

Tipok
31.08.2017
03:47:47
проверку на empty() lol
мне надо туда не попасть вообще.

@
31.08.2017
03:49:12
есть еще InputFilter на EditText прикручивается

Tipok
31.08.2017
03:50:01
if (newText != null && newText.length() > 0) { fragmentPresenter.showFragment(searchStoreFragment); } else { fragmentPresenter.showFragment(mostVisitedStoreFragment); } В общем при перевороте сначала попадаю в ELSE, потом 2 событие в IF.

И из-за этого searchStoreFragment - попадаю в onCreate, но до onResume не доходит ЖЦ

т.к. другой фрагмент уже приаттачился и запустился

@
31.08.2017
03:54:04
Поглядел бы сорцы данной вьюхи, че там думать, я так уже половину Sdk перерыл)

Google
Tipok
31.08.2017
03:54:51
вообще вот такой код new Handler().postDelayed(() -> fragmentPresenter.showFragment(searchStoreFragment), 300); решает проблему, тип первый фрагмент дошел до onResume и потом только начал запускаться второй

Boris
31.08.2017
03:55:30
Кто "щас пишет"? Что вы имеете в виду под "данными в интенте"? Если задача превратить строку одного формата в строку другого формата - сделайте split по запятым, а потом собирайте обратно как хотите.
Там список, который вытаскивается из базы данных. В одной строке name , description ( то есть два столбца). Этот список должен быть упакован в интент в текстовом формате. Андроид упаковывает все через запятую, а мне их нужно разбить, что бы строки были по отдельности

Tipok
31.08.2017
03:55:54
но было нормик вообще не попадать в это событие с пустым текстом(именно при перевороте)

Boris
31.08.2017
04:03:06
@
31.08.2017
04:04:29
а как ты определил что упаковывает через запятую?

Admin
ERROR: S client not available

Алексей
31.08.2017
04:05:11
А как надо??
Получите из базы все нужные данные, да отформатируйте как душе угодно.

Boris
31.08.2017
04:06:47
а как ты определил что упаковывает через запятую?
Я вставляю интент к примеру в sms сообщение и там через запятую

Получите из базы все нужные данные, да отформатируйте как душе угодно.
Получаю без проблем, но вид интента внешний настроить не знаю как

Алексей
31.08.2017
04:08:18
Получаю без проблем, но вид интента внешний настроить не знаю как
Вы в интент подаёте строку, которую SMS-приложение вставит в качестве текста. Вот эту строку вы можете сформировать как угодно. Или как вы интент делаете?

Boris
31.08.2017
04:09:18
Да все верно, но что делать если подается список. А до того, как он подается в интент он сформирован через запятую

Boris
31.08.2017
04:10:02
На stackoverflow советуют через Html.fromHtml() делать

Алексей
31.08.2017
04:10:31
Текст смс сообщения? Вы какую-то дичь делаете)

Boris
31.08.2017
04:11:24
Вот топик https://stackoverflow.com/questions/45972507/customize-intent-in-share-button?noredirect=1#comment78904034_45972507

Алексей
31.08.2017
04:13:46
Сделайте руками текстовое сообщение, зачем вы пытаетесь массив туда запихать.

вместо test.toString() сформируйте строку как вам надо

Boris
31.08.2017
04:15:10
Ок, это наверно то что надо. А что за метод?

Google
Boris
31.08.2017
04:16:58
Всем большое спасибо за помощь. Не имел опыта с редактированием строки

Ростислав
31.08.2017
04:19:06
Господа, в приложении есть задача получить файл из памяти с расширением .repositories, как это лучше сделать? Впихивать библиотеку для этого не хочется. Свою писать - тем более. Как это реализовать другим путем? Например, через "...открыть с помощью", но так, чтобы файл пришел ко мне в onActivityResult?

Никита
31.08.2017
04:30:49
А что за стандартный?
https://developer.android.com/guide/topics/providers/document-provider.html?hl=ru

https://developer.android.com/reference/android/content/Intent.html?hl=ru#ACTION_OPEN_DOCUMENT

57885
31.08.2017
04:34:08
Кто работал с nfc как правильно сделать? в активити pager с фрагметами, во фрагментах recycler с кнопками. как на onClick button повесить запись nfc метки с передачей надписи на кнопке и обратно чтоб при положительной записи изменить состояние кнопки. через callback(и)

The
31.08.2017
05:05:26
Пацаны, в android studio 3, ретролямбду по умолчанию добавили?(default toolchain)

Алексей
31.08.2017
05:06:05
не ретролямбду, но другой метод поддержки java8.

The
31.08.2017
05:07:22
не ретролямбду, но другой метод поддержки java8.
т.е просто удаляешь из gradle ретро, вкл java 8 и работаешь как раньше с ретро?

Алексей
31.08.2017
05:10:46
т.е просто удаляешь из gradle ретро, вкл java 8 и работаешь как раньше с ретро?
https://developer.android.com/studio/write/java8-support.html - там есть целая секция по миграции с ретролямбды

Dmitry
31.08.2017
05:13:10
Как отключить email о крашрепортах в firebase? Приходят сообщения о новых ошибках, сначала думал из-за того что включил в консоли сообщения о регрессиях. Я их выключил, а сегодня опять пришли -_-



Страница 1947 из 3205