169 похожих чатов

Как в ресайклере задавай одинаковую ширину группе элементов, а именно

ширину самого широкого элемента? В итоге в ресайклере будут группы элементов, у каждой из групп своя ширина.

6 ответов

13 просмотров
M- Автор вопроса

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

Вопрос не понятен Можешь переформулировать?

M- Автор вопроса

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

Можешь попробовать просто расположить элементы с шириной wrap_content в RecyclerView, но сделать callback который будет дергаться из viewTreeObserver.addOnGlobalLayoutListener Этот метод вызывается когда элементы расположены во View, только тогда ты сможешь получить ширину элементов. Потом отдаешь эти результаты в Fragment или Adapter. Когда ширина каждого элемента группы посчитана, выбираешь максимальную ширину и меняешь данные своего содержимого так, что в данных твоего item будет храниться высота, которая будет у элемента (до этого мог передавать отрицательное число как результат того, что ширина не известна). Эта ширина будет у каждого твоего элемента. После вызываешь notifyDataSetChanged, но конкретно для твоей группы элементов, у которой ты считал ширину Важно, что когда ты не знаешь точную ширину у элементов нужно задавать visibility = View.GONE. Иначе будут мерцания

M- Автор вопроса

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

Мне кажется не стоит впринципе разделять сообщение на элементы таким образом

Похожие вопросы

Обсуждают сегодня

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта