Общаемся на темы, посвящённые нативной Android-разработке. + Про Android NDK: @ndk_ru + Про iOS: @ios_ru + Вакансии: @mobile_jobs + It чаты @it_chats + Флудилка @androidflood Рекомендуем отключить уведомления, чтобы пребывание было комфортным.
После того, как вызывается notify. Мне нужно убедиться в том, что вью обновилось и только тогда прописать определенную логику.
Читать полностью…Всем привет. Такой вопрос: можно как-то поймать ивент о том, что адаптер в RecyclerView обновил свою вьюшку?
Читать полностью…Написать скрипт который каждый день с интервалом 1-2 часа, будет автоматом запускать Speedtest в сети 5G с тестового телефона, со максимальной скоростью рядом с БС, которая автоматом будет попадать в статистику SpeedTest, для мировой статистики.
Читать полностью…Добрый вечер всем!
Есть один проект нужно его реализовать
Там наверняка есть какой-нибудь листенер на отображение видимых элементов. Либо в RV, либо в адаптере, либо в манагере. Не помню, где точно. А задержка от балды - верная дорога к новым глюкам )
Читать полностью…А если дальше в списке высота айтема опять уменьшится, тогда какие-то из них будут видны частично. И эти танцы с бубном окажутся бесполезными.
Читать полностью…Тогда текст не помещается и предложение обрывается на половине, милорд 😅
Читать полностью…Интересно, почему задержка у postDelayed именно 100, а не 87 или не 109? :)
Читать полностью…Простое присваивание новых значений свойствам layout params эффекта не имеет. Нужно вызывать setLayoutParams. Тогда он дернет нужные методы для обновления лейаута.
Читать полностью…Солидарен.
Я иногда по привычки тяну мышкой на элементы, чтобы подогнать под пиксели 😁
А почему RecyclerView.LayoutParams, а не ConstraintLayout.LayoutParams?
Читать полностью…после 2-х лет рабоыт с компоузом возврашение на xml на 15 минут стало таким приятным на самом деле
Читать полностью…Как же всё непросто с этим XML, ужас. В том же Compose я бы достаточно быстро реализовал эту штуку без какого-либо геморроя
Ладно, попробую поискать что-то ещё на тему - не я один же реализовывал такой функционал 🙂
Однако если я ставлю RV height через setLayoutParams с помощью new RecyclerView.LayoutParams, то у меня, почему-то, RV начинает занимать большую часть CL 🤔
Читать полностью…Какой-какой именно момент?
Вьюшка обновляется после notify или при проматывании ресайклера юзером, там вызывается onBind
Пишите, никто не запрещает.
Но здесь это офтоп.
Верить в меня не обязательно!
Я сам в себе верю и этого достаточно.
Ну и помимо этого если источник данных упёртый дятел иногда может отдать одно и то же DTO, то этот костыль ещё раз пересчитает размер RV, а если одинаковых DTO будет сразу много... 😁
В целом, однако главное, что выполняется условие - отображать только первые n элементов. Дальнейшее - дело оптимизации :)
Заметил на тестах, что иногда RecyclerView не успевает отрисовать третий элемент (т.е. getChildAt возвращает null), поэтому добавил дилей в ~100мс. Вполне можно поставить его хоть в 50, хоть в 1
Читать полностью…Тогда получится реклама простого советского... Читать далее :)
Увы, поэтому вышеприведённый костыль работает в моём случае
А вот оказывается я выявил такие моменты, когда ViewHolder "жиреет" до 82dp, что явно больше 64dp:)
Читать полностью…Если высота айтема известна и задана в dimen, и при этом высота RV должна быть 3*айтем, то что мешает и эту высоту задать в dimen и тупо присвоить ее в layout_height у RV? Нипанимаю.
Читать полностью…В общем вот что я в итоге выдумал совместно с одной LLM (можете кидаться помидорами):
Засовывается всё это дело в место где адаптер RV получает новую порцию данных
// actions is List<MyDTO>Читать полностью…
// n is number item to visible
if (actions.size() > n) {
recyclerView.postDelayed(() -> {
var total = 0;
for (var i = 0; i < n; i++) {
var c = recyclerView.getChildAt(i);
total += recyclerView.getLayoutManager().getDecoratedMeasuredHeight(c);
}
var params = recyclerView.getLayoutParams();
params.height = total;
recyclerView.setLayoutParams(params);
}, 100); // Need because the RV may not have time to create the element
} else {
if (recyclerView.getLayoutParams().height != ViewGroup.LayoutParams.WRAP_CONTENT) {
recyclerView.post(() -> {
recyclerView.getLayoutParams().height = ViewGroup.LayoutParams.WRAP_CONTENT;
recyclerView.requestLayout();
});
}
}
Потому как в любом случае мы получаем вот это
Читать полностью…Хмл - простой и декларативный )
С расположением и размерами вью тоже все достаточно просто.
Ну и что? Внутри CL у разных вью тоже можно менять размеры.
Читать полностью…