Норм, что я эти функции в одном репозитории записал?

|
creeksoncreeks 2022-07-03 23:53:57
2022-07-03 23:52:27
Вот у меня есть функции в репозиториях.
Допустим, для получения обьектов:
fun getObjects…
Они возвращают объекты дергая сервер.
И есть
fun getDBObjects…
Это те объекты, котооые уже есть у меня в бд.

ну и вызывай их когда надо, проверяй актуальность данных и погнал вызывать

только названия сделай понятнее типа getDataFromNetwork и тп

2022-07-03 23:54:27
creeksoncreeks 2022-07-03 23:53:57
ну и вызывай их когда надо, проверяй актуальность данных и погнал вызывать

только названия сделай понятнее типа getDataFromNetwork и тп

Норм, что я эти функции в одном репозитории записал?

pshorokhov 2022-07-03 23:55:09
2022-07-03 23:52:27
Вот у меня есть функции в репозиториях.
Допустим, для получения обьектов:
fun getObjects…
Они возвращают объекты дергая сервер.
И есть
fun getDBObjects…
Это те объекты, котооые уже есть у меня в бд.

Мы у себя делаем так.
Есть один метод у репозитория getObjects(needUpdate: Boolean): Flow<List<Object>>
он возвращает флоу
далее читает из базы, и отправляет во флоу локальные данные
затем если нужно идет в сеть, получает новые данные, их кладет в базу, база уведомляет об обновлениях по флоу

pshorokhov 2022-07-03 23:56:23
2022-07-03 23:54:27
Норм, что я эти функции в одном репозитории записал?

Да норм, это ответственность репозиториев ходить в сеть и локальный storage

2022-07-03 23:57:36
pshorokhov 2022-07-03 23:55:09
Мы у себя делаем так.
Есть один метод у репозитория getObjects(needUpdate: Boolean): Flow<List<Object>>
он возвращает флоу
далее читает из базы, и отправляет во флоу локальные данные
затем если нужно идет в сеть, получает новые данные, их кладет в базу, база уведомляет об обновлениях по флоу

«затем если нужно» — если бд вернет пустой ответ?

creeksoncreeks 2022-07-03 23:58:11
2022-07-03 23:54:27
Норм, что я эти функции в одном репозитории записал?

да, лично я делаю репо под каждый тип данных (например посты и юзеры – 2 разных репо)

pshorokhov 2022-07-03 23:58:39
2022-07-03 23:57:36
«затем если нужно» — если бд вернет пустой ответ?

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

2022-07-03 23:58:58
Всё, понял.
Всем спасибо
creeksoncreeks 2022-07-04 00:03:32
2022-07-03 23:58:58
Всё, понял.
Всем спасибо

если что вот отдельный чатик, там faq есть, где-то в недрах – кукбуки, статьи, примеры, в общем полный набор @android_architecture

larten13 2022-07-04 00:27:32
Господа, пишу простое приложение где первый фрагмент ресайклер, второй это детали объекта из ресайклера, подскажите как мне передать id этого объекта на вход во второй фрагмент
elgreed 2022-07-04 00:29:20
Всем привет, есть BottomSheetDialog с TabLayout и ViewPager2. В фрагментах, которые на вкладках, есть RecyclerView, можно как то сделать так, что бы Recycler не скроллился пока BottomSheetDialog не будет раскрыт на весь экран и что бы когда мы достигли верха Recycler при свайпе вниз, ивент скрола передавался на BottomSheetDialog и он сворачтвался? Может какая либа есть?
creeksoncreeks 2022-07-04 00:29:53
larten13 2022-07-04 00:27:32
Господа, пишу простое приложение где первый фрагмент ресайклер, второй это детали объекта из ресайклера, подскажите как мне передать id этого объекта на вход во второй фрагмент

arguments, например

artemminitskyi 2022-07-04 00:35:31
larten13 2022-07-04 00:27:32
Господа, пишу простое приложение где первый фрагмент ресайклер, второй это детали объекта из ресайклера, подскажите как мне передать id этого объекта на вход во второй фрагмент

Argumets, как пишут выше, Bundle, ViewModel как вариант

larten13 2022-07-04 00:36:18
artemminitskyi 2022-07-04 00:35:31
Argumets, как пишут выше, Bundle, ViewModel как вариант

вот я пытаюсь с помощью viewModel сделать но что-то не допираю пока как

inthecornersc 2022-07-04 00:42:53
larten13 2022-07-04 00:36:18
вот я пытаюсь с помощью viewModel сделать но что-то не допираю пока как

https://developer.android.com/guide/fragments/communicate

larten13 2022-07-04 00:43:22
inthecornersc 2022-07-04 00:42:53
https://developer.android.com/guide/fragments/communicate

спасибо

pshorokhov 2022-07-04 00:44:22
larten13 2022-07-04 00:36:18
вот я пытаюсь с помощью viewModel сделать но что-то не допираю пока как

Также в бандл в аргументы кладешь id. Затем создается фрагмент, и при создании фрагмент передает id во вьюмодель (ручками просто вызывать метод, или через di (savedstatehandle если хилт, если даггер то же он, но придется сделать сложный assistedInject)

creeksoncreeks 2022-07-04 00:47:37
inthecornersc 2022-07-04 00:42:53
https://developer.android.com/guide/fragments/communicate

это уже полноценный кандидат в закрепы

pshorokhov 2022-07-04 00:50:29
inthecornersc 2022-07-04 00:42:53
https://developer.android.com/guide/fragments/communicate

Кажется там нет ответа на его вопрос. Если только shared viewmodel но я хз, такое советовать

inthecornersc 2022-07-04 00:52:43
pshorokhov 2022-07-04 00:50:29
Кажется там нет ответа на его вопрос. Если только shared viewmodel но я хз, такое советовать

Наоборот. Самое то.

inthecornersc 2022-07-04 00:53:31
creeksoncreeks 2022-07-04 00:47:37
это уже полноценный кандидат в закрепы

Дня не проходит, чтобы я этот линк сюда не кидал.
А закрепы мало кто читает…

Gambit7991 2022-07-04 01:01:02
inthecornersc 2022-07-04 00:53:31
Дня не проходит, чтобы я этот линк сюда не кидал.
А закрепы мало кто читает…

Английский у людей не нативный же .
У меня были сложности андроид документацию читать .
Хотя несколько лет на английском общаюсь каждый день .
Все ищут инфу с русскоязычных источников , а там ее соответсвенно в обрез .
Ну информации много , но очень криво изъясняют обычно )
Вот и получается, что они хотят разъяснений на русском , а ты их в документацию отправляешь 👉.
И они такие :
Опять?🙀

Gambit7991 2022-07-04 01:02:11
inthecornersc 2022-07-04 00:53:31
Дня не проходит, чтобы я этот линк сюда не кидал.
А закрепы мало кто читает…

Хотя я вот на разъяснении viewmodel и начал рисерчи делать на других источниках , так как немного не доходило.
Языковой барьер , эх…

inthecornersc 2022-07-04 01:03:11
Gambit7991 2022-07-04 01:01:02
Английский у людей не нативный же .
У меня были сложности андроид документацию читать .
Хотя несколько лет на английском общаюсь каждый день .
Все ищут инфу с русскоязычных источников , а там ее соответсвенно в обрез .
Ну информации много , но очень криво изъясняют обычно )
Вот и получается, что они хотят разъяснений на русском , а ты их в документацию отправляешь 👉.
И они такие :
Опять?🙀

По-моему, там вполне конкретная инфа без воды и с примерами 🤷

Gambit7991 2022-07-04 01:05:41
inthecornersc 2022-07-04 01:03:11
По-моему, там вполне конкретная инфа без воды и с примерами 🤷

Да , так и есть .
Ты это так видишь и понимаешь .
Все правильно .
И там так и есть .
Я вот когда смотрю на код с какими то там рекурсиями , все тоже ясно .
Так как сам перерешал кучу задач с рекурсией .
Но если дать какому то типу который их никогда не видел, и начать объяснять , он пока сам не напишет код , раз 5-7 , не поймёт же )

Gambit7991 2022-07-04 01:06:34
inthecornersc 2022-07-04 01:03:11
По-моему, там вполне конкретная инфа без воды и с примерами 🤷

Не забывай , ты читаешь то , что уже знаешь .
А они , читают то, чего никогда не видели в жизни )
И не имеют понятия как работать должно .
И язык чужой )

Gambit7991 2022-07-04 01:06:51
По этому тебе все коротко , ясно и без воды , а им нет)
inthecornersc 2022-07-04 01:07:19
Gambit7991 2022-07-04 01:06:51
По этому тебе все коротко , ясно и без воды , а им нет)

Тады ой 😅

inthecornersc 2022-07-04 01:10:45
Gambit7991 2022-07-04 01:06:34
Не забывай , ты читаешь то , что уже знаешь .
А они , читают то, чего никогда не видели в жизни )
И не имеют понятия как работать должно .
И язык чужой )

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

creeksoncreeks 2022-07-04 01:11:21
Gambit7991 2022-07-04 01:01:02
Английский у людей не нативный же .
У меня были сложности андроид документацию читать .
Хотя несколько лет на английском общаюсь каждый день .
Все ищут инфу с русскоязычных источников , а там ее соответсвенно в обрез .
Ну информации много , но очень криво изъясняют обычно )
Вот и получается, что они хотят разъяснений на русском , а ты их в документацию отправляешь 👉.
И они такие :
Опять?🙀

чтение англ это отдельный скилл, имхо надо начинать обучение себя как разработчика именно с англа, вопреки всем «не хочу» и «скучно же»

Gambit7991 2022-07-04 01:13:56
inthecornersc 2022-07-04 01:10:45
На самом деле, мне однажды точно так же понадобилось узнать, как гугл рекомендует организовывать взаимодействие между фрагментами. И, поискав информацию самостоятельно в гугле, я нашел эту новую для себя статью от гугла 😀

У всех по разному голова работает . По твоему совету я проходил от гугла Котлин и там зацепилась тема с view model.
Я понял идею но не догнал синтаксис .
Зашёл ещё на пару сайтов , посмотрел больше примеров , написал пару раз и как бы потом понял .
Но чисто от гугла курса не хватило .

Gambit7991 2022-07-04 01:15:02
Но я согласен на 100% , идеальный вариант, читать документацию создателей.
Это логично )
inthecornersc 2022-07-04 01:26:31
Gambit7991 2022-07-04 01:13:56
У всех по разному голова работает . По твоему совету я проходил от гугла Котлин и там зацепилась тема с view model.
Я понял идею но не догнал синтаксис .
Зашёл ещё на пару сайтов , посмотрел больше примеров , написал пару раз и как бы потом понял .
Но чисто от гугла курса не хватило .

По-моему, большинство примеров с вм устарели. Сейчас удобнее использовать by viewModels и by activityViewModels, а в примерах всё через ViewModelProvider.

Gambit7991 2022-07-04 01:36:27
inthecornersc 2022-07-04 01:26:31
По-моему, большинство примеров с вм устарели. Сейчас удобнее использовать by viewModels и by activityViewModels, а в примерах всё через ViewModelProvider.

Спасибо за пищу для мозга , как раз сейчас буду подключать и ознакомлюсь за одно .👍🤝🙏

kubabelik 2022-07-04 02:03:27
Gambit7991 2022-07-04 01:36:27
Спасибо за пищу для мозга , как раз сейчас буду подключать и ознакомлюсь за одно .👍🤝🙏

inline fun <reified VM : ViewModel> Fragment.viewModels() = createViewModelLazy(VM::class, { this.viewModelStore }, { viewModelFactory })

Snowmaze 2022-07-04 02:41:23
kubabelik 2022-07-04 02:03:27
inline fun <reified VM : ViewModel> Fragment.viewModels() = createViewModelLazy(VM::class, { this.viewModelStore }, { viewModelFactory })

эта же функция уже есть в либах от гугла

kubabelik 2022-07-04 02:43:49
Snowmaze 2022-07-04 02:41:23
эта же функция уже есть в либах от гугла

В хилте?

Snowmaze 2022-07-04 02:43:54
нет
Snowmaze 2022-07-04 02:46:10
в какой-то из ktx либ
Snowmaze 2022-07-04 02:46:24
что ей в хилте то делать
Snowmaze 2022-07-04 02:46:48
fragment-ktx
kubabelik 2022-07-04 02:47:25
Все, уже сам нашел)
timscriptov 2022-07-04 07:47:51
Подскажите аннотацию для Котлин, чтобы отключить для условия предупреждение.

Код:
if(….tag!=null else …)

Compiler: conditions «tag!=null» is always ‘true’

timscriptov 2022-07-04 07:48:52
Он может быть null, поэтому чек нужен.
evgen_gel 2022-07-04 07:50:21
Ну а tag помечен как nullable тип?
evgen_gel 2022-07-04 07:50:36
Просто так он выдавать такое не будет
timscriptov 2022-07-04 07:50:49
Убрал каст к String и норм сейчас
evgen_gel 2022-07-04 07:51:13
«as String?»
evgen_gel 2022-07-04 07:51:25
Касти к nullable типу
timscriptov 2022-07-04 07:54:34
evgen_gel 2022-07-04 07:51:13
«as String?»

val tag = textView.tag as String

if(if(…) {
tag != null
} else {
«text» != tag
})
{}

|