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

Всем привет, друзья, товарищи, коллеги, кто нибудь знает хоть один

нормальный способ организовать мульти левел tree view? есть expandable view, но там макс вложенность = 1 чайлд, а надо N

11 ответов

13 просмотров

Обычный recycler, с контролем, допустим во вьюмоделе (иди где-то в другом месте, в зависимости какую архитектуры используете). Под "контролем" я имею ввиду что отлавливать клики во вью холдере и слать в вьюмодель (или что там у вас) и добавлять / удалять определённые элементы, после чего submitList на адаптере (адаптер начледовать от ListAdapter). Я бы так делал

Сергей-Маслов Автор вопроса

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

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

Сергей-Маслов Автор вопроса

сделал через скрытие элементов списка itemView.layoutParams.height = 0 работает нормально. это если очень коротко. если чуть длиннее - то по факту у меня под капотом простой список, но с помощью вьюх все выглядит так, как будто это дерево

Можно просто мапить дерево в линейный список и показывать элементы с нужными отступами в соответствии с их открытым/закрытым состоянем. И не нужно будет играться с параметрами лэйаутов.

Сергей-Маслов Автор вопроса

Можно, если нет требования иметь возможность скрыть/раскрыть

Перестраивается список, адаптеру говорят в нужном месте notify и опять не нужно играться с отступами 😁

На гите вагон recyclerview treeview и куча навопоченых адаптеров, бери на любой вкус. Я раньше пробовал вроде эту либу иг скрина, работает вполне не плохо

Сергей-Маслов Автор вопроса

Если скинешь хоть одну нормальную, буду признателен, либе со скрина уже 5 лет просто, я надеялся сделали уже чё то поинтереснее

Ну как сказать, либы есть и новые (даже есть две таких комбайн либы где много чего, включая это). https://github.com/cymcsg/UltimateRecyclerView https://github.com/TellH/RecyclerTreeView https://github.com/nuptboyzhb/TreeRecyclerView https://github.com/LeeReindeer/Tree2View https://github.com/mikepenz/FastAdapter https://github.com/h6ah4i/android-advancedrecyclerview https://github.com/bmelnychuk/AndroidTreeView https://github.com/CymChad/BaseRecyclerViewAdapterHelper Есть ещё, но щас так не найду, это из закладок. Главное принцип понять. то что, ей 5 лет, это не делает её не рабочей, обнови зависимости и всё.

Сергей-Маслов Автор вопроса

Сохранил, спасибо

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта