Izya
И скажут Мы хотим реакт
те же яйца (ой, извините, серебряная пуля разработки ), только в профиль
Carey
Да я ж не спорю
Andy
Кто сталкивался что при обновлении данных в адаптере RecyclerView скролит в самый вверх, ответы на СО не помогли. Пробовал юзать DiffUtil и пробовал без него - просто через notifyItemChanged, notifyItemRangeInserted, notifyItemRangeRemoved, во всех случаях он скролит вверх. ListAdapter - тоже юзал Layout: NestedScrollView LinearLayout ImageView Button RecyclerView
Andy
Та вот походу обновляет фул данные
Andy
Но не понятно почему
Andy
Что мешает скролить вручную?
Скролить вообще не нужно. Допустим я кликаю на 250й элемент списка, обновляю его, диспатчу обнову в Адаптер и при обновлении элемента RecyclerView скролит вверх
Anonymous
В чем разница между FragmentContainerView и fragment?
Олег
так просто не сказать
Олег
кинь код
Andy
Юзали setFixedSize(true) ?
Там не фиксированя длина. При клике на элемент под ним добавляется ещё 2а и я вызываю у адапрета notifyItemRangeInserted
Andy
В чем разница между FragmentContainerView и fragment?
Первый не работает если юзаешь Jetpack Navigation, точнее не работает метод findNavController(R.id.твой_ид_контейнера)
Олег
ну ясно, попробуй просто обновлять данные в адаптере, дифутил все сделает сам
Олег
точнее ты меняешь где то данные, обсервишь результат и субмитишь в адаптер
𝙈𝙖𝙠𝙨𝙤𝙣𝙞𝙘 🇷🇺
Товарищи, а в продакшене используют либу Ktor для чисто Андроид приложений или онли Retrofit?)
Andy
Случайно
Andy
кинь код
https://pastebin.com/CjbS6ys2
Andy
Весь код не кидаю, так как проект сатрый и там много не нужного
Rustam
Весь код не кидаю, так как проект сатрый и там много не нужного
Такой вопрос: какие вычисления делает diffUtil или когда его юзать ?
Andy
я его в данный момент убрал изначально было на DiffUtil, думал, что в нём проблема
ℕo ℕame
Такой вопрос: какие вычисления делает diffUtil или когда его юзать ?
Ну допустим, когда из api приходят лист данных, в котором только 2-3 записи изменились, а не все
Andy
Ну допустим, когда из api приходят лист данных, в котором только 2-3 записи изменились, а не все
Но если у тебя один и тот де инстанс списка, то он ничего делать не будет. Там нужно посылать каждый раз новый
Andy
кинь код
Вот с DiffUtil'ом, результат такой же https://pastebin.com/TTC7Hi4Z
Александр
Всем привет. ребят, подскажите, самый простой адаптер. Проблема в том что иногда отрисовывает неправильно количество элементов. приходит список из 2 элементов - отрисовывает 1, перезахожу на экран - отрисовывает 2. В чем проблема может быть?
Andy
Он переиспользует компненты, а не создаёт. Ты должен работать (bindить данные) как будто там все даные не валидны, например у тебя есть проверка: if (licenceInfo != null) { меняешь текст } Это не правильный подход. Потому что может так произойти, что у тебя попадётся view где раньше licenceInfo было не null и во вьюхе останется старый текст, нужно: if (licenceInfo != null) { меняешь текст } else { textView.setText(""); }
Олег
то ли я не понимаю, то ли ты юзаешь только ContactListViewHolder
Олег
@Override public void onBindViewHolder(@NonNull ContactListViewHolder holder, int position) { holder.bind(getItem(position)); }
Andy
ContactListViewHolder - абстрактный класс, в котором один метод: public abstract void bind(ContactListModel model); Два остальных наследуются от него. ContactListModel - абстрактный класс, с методом, который возвращает тип как int для того что бы различать екземпляры в getItemViewType
Александр
А, сори, вопрос про кол-во был, тогда забей, но имею ввиду, что данные при таком подходе будут не валидны
все равно не помогло. лог выводит что 2 элемента и холдер 2 раза отрабатывает. на 1 экране 1 элемент
Andy
Тогда открывай LayoutInspector и смотри что там внутри
Олег
хм, тут конечно дебагом ловить вангую, упрости пока дифутил и тести
Олег
если не найдешь дебаж с одним вьюхолдером
Олег
адаптеры всегда больная тема
Олег
и совет на будущее, если у вьюхи меняется не все, то стоит реализовать getChangePayload у дифутила, чтобы при бинде не затрагивать то, что не меняется
Александр
не, 1 элемент я вижу. не вижу второй
Олег
вопрос конечно тупой, а у тебя какой layoutManager, вдруг ты указал horizontal и у тебя match_parent у width
Александр
вопрос конечно тупой, а у тебя какой layoutManager, вдруг ты указал horizontal и у тебя match_parent у width
нет, у меня фигня в том что иногда он правильно отрисовывет 2 элемента, а иногда 1 почему то вместо 2
Олег
аа, не заметил, что у тебя иногда нормально, ну да, чекай получение даты по позиции и dataSet
Anonymous
@Inject private var api: ApiService = App.dagger.getApi() Dagger ругается что переменная private. Для инкапсуляции надо это мне. А Даггер сгенерить не может. Бесит этот Даггер в последнее время
Andy
Кто сталкивался что при обновлении данных в адаптере RecyclerView скролит в самый вверх, ответы на СО не помогли. Пробовал юзать DiffUtil и пробовал без него - просто через notifyItemChanged, notifyItemRangeInserted, notifyItemRangeRemoved, во всех случаях он скролит вверх. ListAdapter - тоже юзал Layout: NestedScrollView LinearLayout ImageView Button RecyclerView
Спасибо всем кто потратил свое время. В общем так как добавляются элементы в список, то пересчитывается высота RecyclerView и соответсвенно всех остальных, фикстися если заменить LinearLayout на RelativeLayout, может помогу кому-то. Спасибо
Andy
где был LinearLayout?
Before: NestedScrollView LinearLayout ImageView Button RecyclerView After: NestedScrollView RelativeLayout ImageView Button RecyclerView
Александр
Dmytro
Before: NestedScrollView LinearLayout ImageView Button RecyclerView After: NestedScrollView RelativeLayout ImageView Button RecyclerView
А скролл и ресайклер имеют одинаковую ориентацию?
Mike
Тимлид - роль, обросшая мифами и легендами. Этакий предел совершенства. "Почему же ты отказался от тимлидства?" 2 сентября в 19 по Москве Евгений Кот (Wrike) задаст этот вопрос в эфире: ▫️ Егору Толстому (JetBrains), который предпочел путь продакта, но по вечерам учит лидов в рамках Podlodka Teamlead Crew, ▫️ Вадиму Мартынову (Контур, RndTech), который посчитал карьеру программиста перспективней пути менеджера разработчиков, ▫️ и Олегу Склярову (Skyeng), который 1,5 года тимлидил на удаленке, вернулся в разработку, но сейчас вновь и.о. тимлида Поговорим, какие ожидания у каждого были на старте. Что сбылось, что нет. Чему пришлось срочно учиться - и разучиваться. Как коллеги приняли "назначение" и уход с должности. Что там по деньгам. Ты тоже сможешь подключиться к разговору и задать любой вопрос. Автору лучшего ребята обещают леща :) 📝 Подробнее о лайве
Valentin
всем привет! есть боттом меню, и 5 фрагментов, они очень тяжелые, как сделать так чтобы при переключении между разделами меню фрагменты фризелись и не кушали память
Valentin
не пересоздавать не нужно, сейчас я их просто hide/show делаю
Valentin
а как лучше?
Rustam
не пересоздавать не нужно, сейчас я их просто hide/show делаю
С Боттом шит юзать hide show это уже откровенное изнасилование (извините за лексикон)
Rustam
BottomNavigationView )
Юзайте адаптер FragmentStatePagerAdapter
Izya
BottomNavigationView )
подключи к нему viewpager2 и пользуйся на здоровье
Andrey
Прошу прощения за оффтоп, но кто что думает насчет Jetpack Compose, есть ли у него потенциал?
Rustam
BottomNavigationView )
https://medium.com/@freedom.chuks7/how-to-use-jet-pack-components-bottomnavigationview-with-navigation-ui-19fb120e3fb9 попробуйте это ) лучший варинат
Valentin
спасибо сейчас попробую
pavelkostyukov
👍
Nikita
Таже хрень
А в чем проблема тут?