Alexey
И придётся опять все в базу писать
Alexey
Юзай inmemory хранилище для токенов) редис например
François Leclercq
Всем привет. Есть MainActivity с ресайклером из элементов, куда по сети приходят данные (подкачиваются через rx цепочку). Можно добавить каждый элемент "в избранное", через контентпровайдер. Вопрос: если юзер понадобавлял целую кучу, нет другого пути как в каждом onBindViewHolder копаться в базе, сверять имена и отображать соответствующий значок?
François Leclercq
ну ты у класса item добавь свойство isFavourite и только один раз его считай с базы.
я к этому пришел, но все равно при каждой подкачке 20 раз нужно пройтись по базе
Олександр
я к этому пришел, но все равно при каждой подкачке 20 раз нужно пройтись по базе
"при каждой подкачке" - ммм, а когда она вызывается?
François Leclercq
видимо меньше уже никак. а с учетом того что проход по базе - асинхронен, тут проблемы. у меня по крайней мере - реализовано через single.fromCallable и уже какие-то утечки
François Leclercq
то есть, по идее, нужно всю эту хрень еще более жестко заколлбечить. щас так: дошли до treshold, отписались от одной прослушки данных, подписались на новую, дернули следующие 20 штук
François Leclercq
следовательно, нужно: дошли до границы, дернули базу, ее коллбек дергает отключение подписок, следующую подписку, и потом уже следующие 20 штук. правильно?
Олександр
изначально вопрос стоял в том, чтобы в onBindViewHolder каждом пробегаться по базе для проверки на флаг "избранное". Это не оптимально)
Alexey
ну ты у класса item добавь свойство isFavourite и только один раз его считай с базы.
А если он захочет анимацию изменение иконки добавить - как быть?
Олександр
А если он захочет анимацию изменение иконки добавить - как быть?
Так это не должно повлиять на запись/чтение из базы)
Георгий
А если он захочет анимацию изменение иконки добавить - как быть?
notifyItemChanged у ресайклера, будет даже дефолтная кроссфейд анимация
Георгий
Это обновит всю вьюху
Да, но констрейнты то у вьюхи останутся такие же, будет только измененное состояние анимировано визуально
Mike
с payloads можно обновить частично
Олександр
Это обновит всю вьюху
Не понял, парень о работе с базой спрашивал, а тут уже анимация.
Олександр
Я про анимацию спросил
Понял) Хз, не приходилось что-то в recyclerview анимировать без notify..changed
François Leclercq
так. если я правильно помню, контентпровайдер позволяет напрямую к элементу обращаться. значит ли это что можно в onBind... спрашивать типа - есть uri/номер ?
François Leclercq
Почему не CursorAdapter?
ну мы не исключительно с базой работаем же, а с сетью. по базе только "избранные" сверяем
Георгий
Я про анимацию спросил
Ну и statelistanimator 21+ можно вкорячить
François Leclercq
В базе только список избранных айдишников или что?
все что нужно для создания объекта. как это влияет на возможность сверить?
Олександр
так. если я правильно помню, контентпровайдер позволяет напрямую к элементу обращаться. значит ли это что можно в onBind... спрашивать типа - есть uri/номер ?
Так эта же база не обновляется по сети. Один раз считать, потом обновлять по мере действий пользователя
Alexey
Ну и statelistanimator 21+ можно вкорячить
Не. По нажатию анимируешь и меняешь поле домэйн модели, а когда из слоя дата приходит результат добавления в избранное - проверяешь через diffutils что обновлено
Alexey
Мб так
Георгий
Не. По нажатию анимируешь и меняешь поле домэйн модели, а когда из слоя дата приходит результат добавления в избранное - проверяешь через diffutils что обновлено
Тогда нет смысла анимацию делать до, так как из домейна может прийти файл, есть смысл начинать анимацию любым способом только после успешного ответа от эвента "добавить в избранное"
Alexey
Смысл есть - юзер увидит как быстро работает приложение
Георгий
Смысл есть - юзер увидит как быстро работает приложение
Тогда надо показывать анимацию процесса добавления, типа троббера или хартбит
Alexey
Нет, сразу сказать что все сделал и ок)
Alexey
Дело вкуса крч
Alexey
Не по джедайски
Так все делают)
Георгий
Так все делают)
Ататашки, но вообще да, так быстрее
Камилла
Только начала разбираться с Firebase.. Кто может знает, в чем причина?
Ivan P.
Аргументы не совпадают с сигнатурой метода
Камилла
Спасибо)
Олександр
Да
Aleksey
Привет! Есть такой layout: https://codeshare.io/GqlZqX После onResume добавляю вместо FrameLayout такой фрагмент: https://codeshare.io/5MgxPJ В результате - RV сотню тысяч раз вызывает Adapter#onCreateViewHolder и все начинает фризить. Как лечить?
Dmitriy
Только начала разбираться с Firebase.. Кто может знает, в чем причина?
В конструктор нужно передать объекта FirebaseListOption<String>. А потом используй подходящий конструктор уже у него.
Aleksandr
Народ. ВНИМАНИЕ !!!! Самый идиотский вопрос! 👉👉👉 Как выровнять текст в TextView, который лежит в ConstraintLayout, по центру ? android:gravity="center" не работает 😰😰😰😰
Aleksandr
кусок разметки. На хардкод не обращайте внимания, он нужно для отладки. После удалю
Rezeda
text_align center
Rezeda
?
Aleksandr
textAlignment
🎉🎉🎉🎉🎉🎉
Aleksandr
Заработало. Совсем забыл об этом свойстве
Георгий
Заработало. Совсем забыл об этом свойстве
я бы лучше сделал ширину wrap_content и выравнивал по bias, погибче выходит
Георгий
в чем гибкость заключается ?
то, что bias может принмать значение от 0 до 1 и можно выравнивать не только по центру, но и чуть левее, чуть правее
Aleksandr
и android:textAlignment="center" тоже не дал результатов
Георгий
прописал. На девайсе все равно влево ушел
ну это надо уже верстку курить и иерархию
Aleksandr
почему так ?
Aleksandr
ну это надо уже верстку курить и иерархию
дальше в версте идут TextView. И все
Георгий
дальше в версте идут TextView. И все
я про верхний уровень, вообще должно работать вот так https://cdn-images-1.medium.com/max/1600/1*I7CHCnvinxkuNISi13Xu5Q.gif
Aleksandr
я про верхний уровень, вообще должно работать вот так https://cdn-images-1.medium.com/max/1600/1*I7CHCnvinxkuNISi13Xu5Q.gif
а может это быть связано с тем, что все нижние View "опираются" на этот TextView, что я пытаюсь выровнять ?
Георгий
а может это быть связано с тем, что все нижние View "опираются" на этот TextView, что я пытаюсь выровнять ?
дропните остальные, посмотрите как заработает одна вьюшка в таком случае и/или попробуйте на другом девайсе/эмуляторе я что-то не прирпомню у себя, чтобы блюпринт превью разъезжался с реальным отображением
Aleksandr
Георгий
нет. Вообще никак не выравнивает.
ээ... попробуйте через девелопер настройки подебажить контейнеры о_О
Георгий
эйэй, а констрейнты где?
Георгий
эйэй, а констрейнты где?
чтобы работал textAlignment нужен match_parent, так как выравнивание идет внутри textview
Георгий
какие ?
чтобы работал bias нужны констрейнты либо горизонтальные и ширина, соответственно, wrap_content или 0dp + app:layout_constraintWidth_default="wrap"
Aleksandr
Георгий
констрейнтов то нет, по которым матчить
Георгий
startToStartOf + endToEndOf
Aleksandr
startToStartOf + endToEndOf
не работало ранее. Ок. На чистой разметке проверю еще раз