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

Друзья, подскажите, пожалуйста, как правильно будет сделать Есть экран, на котором

фрагменты, стандартная ситуация. Некоторые фрагменты не должны показываться, если у них нет данных для показа. В голову пришла мысль, что фрагмент может сам себе ставить isVisible = false, если у него нет данных и наоборот. Насколько это правильный подход? Какие есть другие, более правильные

17 ответов

17 просмотров

То есть мы навигируемся между фрагментами и получаем пустой экран? Это странно. Опишите как у вас навигация построена

Savva-Mirzoyan Автор вопроса
Сергей П.
То есть мы навигируемся между фрагментами и получа...

не не не, я имею в виду, что у меня есть фрагмент/активити, внутри которого/ой внутри другие фрагменты. Эти вложенные фрагменты не должны быть видны пользователю, если фрагменты не показывают данные (в моем конкретном случае "если нет запросов на дружбу", тогда фрагмент с ресайклером потенциальных друзей не виден).

Фрагменты в смысле элементы списка что ли?

Savva-Mirzoyan Автор вопроса
Din-R Islamov
Фрагменты в смысле элементы списка что ли?

"большой" экран сверстан из фрагментов. Пусть будет элемент списка, обычный FragmentContainerView внутри СкроллВью

Тогда это наверное вполне себе уместный способ

Ох, странное решение. Обычно используют ресайклер если элементов потенциально много, и в нем нормальные лэйауты вместо фрагментов. Первое по причине того что скроллвью ломается если накидать туда содержимого больше примерно 5 экранов. Ну и тогда уж не Visible а Gone, на корневой лэйоут фрагмента. Иначе будет пустое место в списке

Savva-Mirzoyan Автор вопроса
Сергей П.
Ох, странное решение. Обычно используют ресайклер ...

Странное решение, что экран разобран на логические блоки в виде фрагментов?

Savva Mirzoyan
Странное решение, что экран разобран на логические...

Да, это не то что странное, это решение лишено смысла Если я правильно понял, речь идет про "несколько фрагментов на одном экране"

Savva Mirzoyan
Странное решение, что экран разобран на логические...

Да. Не очень странное если фрагментов в скроллвью не больше 3-5. Добавьте 999 - получите OOM, или ошибку граф.контроллера о недопустимом размере канваса + тормоза дикие

Savva-Mirzoyan Автор вопроса
Pavel Erokhin
Да, это не то что странное, это решение лишено смы...

Да, у меня случай, что есть 3 фрагмента внутри экрана (тоже фрагмента, но это не важно). У каждого из трёх своя задача отобразить отдельные списки: члены команды поддержки приложения, запросы в друзья и, собственно, уже друзья. Когда какой либо из списков пустой, то фрагмент не должен показываться. Если бы там было нужно просто показать, но у всех вьюшек в ресайклерах ещё свои кнопки, которые нужно обрабатывать. В одном фрагменте+вм это очень нагружено, имхо. Поэтому делю логически разные части на фрагменты (они ж для этого и созданы, нет?), у меня их там не много, ООМ не ловлю.

Savva-Mirzoyan Автор вопроса

Делается рецайклер вертикальный или просто скролл как угодно. Вместо фрагментов делаешь кастомную вью ( хоть с другим рецайклером). Каждая кастомная вью работает со своей vm. Вот тебе и разделение и обработка своя. Не надо фрагменты так использовать

Artemiy Terekhov
Делается рецайклер вертикальный или просто скролл ...

Фрагменты проще для понимания, чем ресайклер, может в этом дело

Капитан Шимпанзе
Фрагменты проще для понимания, чем ресайклер, може...

А ловить потом доп геморой лучше? Микроскопом тоже можно гвозди забивать, но есть нюанс

Artemiy Terekhov
А ловить потом доп геморой лучше? Микроскопом тоже...

Ну, с ними нужно разбираться, писать адаптер с холдером и несколькими неочевидными для новичков функциями. 🤷‍♂

Artemiy Terekhov
Делается рецайклер вертикальный или просто скролл ...

Можно даже без кастом вью, а просто абстракцию создать над разными типами данных, и проверять в адаптере в методе онКриейтВьюХолдер, и в зависимости от того, какой класс в списке биндить разные лэйауты

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта