Size: a a a

StartAndroid Ru Chat

2021 March 03

А

Артём in StartAndroid Ru Chat
Владимир Сакаев
Всем привет, подскажите как добиться данного поведения.
Вот видео как я это сделал, но мой способ решения, слишком костыльный и используется много вычислений, и более пяти переменных, которые хранят состояние, размер и местоположения элементов. Не дай бог, хоть у одной переменной изменится состояние, не так, как это рассчитано, то всё сразу поломается, да и код получился, тяжело читаемый.  Пробовал сделать через RecyclerView, но не получилось, потому что, у него нужно выставлять определенное количество столбцов, а у меня их может быть разное, где 3, где 5. Плюс еще нужно как то, поддерживать удаление элементов.
Сам код скидывать, не вижу смысла, там без слез не взглянешь. Буду рад любой наводке, подсказке. Может есть какие то библиотеки, которые помогли бы.
Так это ж Chips.
источник

А

Артём in StartAndroid Ru Chat
Vladushka
крч у меня такая дебильная ситуация: есть боттом нафигейшн, с 4 фрагментами: на месте одного из них в зависимости от определенного условия может быть кардинально разная логика (которую прятать и скрывать не вариант и которая разбита сейчас еще на 2 фрагмента). Как думаете, насколько костыльная идея открывать какой-то базовый фрагмент, а оттуда переходить на нужный
Мне кажется, для такой ситуации "базовый фрагмент" оптимален. В чём проблема? Раз при переходе сначала идёт поход на бэк, то, выходит, надо показывать загрузку в этот момент. Вот с ней фрагмент и сделать, а оттуда уже реплейс на какой-то нужный.
Либо реально server driven вёрстка, однако, это гемор. Хотя с Jetpack COmpose можно. 😂
источник

А

Алекс in StartAndroid Ru Chat
Да это же тинькоф финтех))))
Угадал?)))
источник

ВС

Владимир Сакаев... in StartAndroid Ru Chat
Алекс
Да это же тинькоф финтех))))
Угадал?)))
нет, работаю над небольшим стартАпом. Потом положу этот проект с портфолио, чтобы на работу можно было устроиться.
источник

А

Алекс in StartAndroid Ru Chat
Владимир Сакаев
нет, работаю над небольшим стартАпом. Потом положу этот проект с портфолио, чтобы на работу можно было устроиться.
Просто в тинькоф была аналогичная задача))))
источник

СП

Сергей П. in StartAndroid Ru Chat
Это StaggeredGridLayoutManager к ресайклеру делается скорее всего без проблем
источник

S

Sergey in StartAndroid Ru Chat
Привет ещё раз! Как лучше получить доступ к полю адаптера из статического ViewHolder?
источник

ВС

Владимир Сакаев... in StartAndroid Ru Chat
Сергей П.
Это StaggeredGridLayoutManager к ресайклеру делается скорее всего без проблем
Как заставить его делать разное количество столбцов, в зависимости от количества элементов в строке ?
источник

S

Sergey in StartAndroid Ru Chat
Sergey
Привет ещё раз! Как лучше получить доступ к полю адаптера из статического ViewHolder?
В момент нажатия на элемент ресайклера хочу получить в холдере поле из адаптера
источник

А

Алекс in StartAndroid Ru Chat
У тебя инициализация полей в холдере идет, в адаптере нет никаких ведь полей
источник

S

Sergey in StartAndroid Ru Chat
Алекс
У тебя инициализация полей в холдере идет, в адаптере нет никаких ведь полей
Держу список данных в адаптере, он может меняться, чтобы при нажатии на элемент ресайклера, получить актуальный список, а не тот, который ставили в onCreate или onBindViewHolder
источник

СП

Сергей П. in StartAndroid Ru Chat
Владимир Сакаев
Всем привет, подскажите как добиться данного поведения.
Вот видео как я это сделал, но мой способ решения, слишком костыльный и используется много вычислений, и более пяти переменных, которые хранят состояние, размер и местоположения элементов. Не дай бог, хоть у одной переменной изменится состояние, не так, как это рассчитано, то всё сразу поломается, да и код получился, тяжело читаемый.  Пробовал сделать через RecyclerView, но не получилось, потому что, у него нужно выставлять определенное количество столбцов, а у меня их может быть разное, где 3, где 5. Плюс еще нужно как то, поддерживать удаление элементов.
Сам код скидывать, не вижу смысла, там без слез не взглянешь. Буду рад любой наводке, подсказке. Может есть какие то библиотеки, которые помогли бы.
Или просто верстка из кода на линеарах.
Примерно так, из исходного списка:
Создали вложенный горизонтальный линеар1, добавляем в него дочерние элементы из списка пока суммарная их желаемая ширина в пикселях не превысит ширину родителя; как превысила - добавляем элементы в следующие.


При удалении/добавлении проще все сначала пересчитать чем разницу (ну потом можно будет и норм сделать)
источник

S

Sergey in StartAndroid Ru Chat
Алекс
У тебя инициализация полей в холдере идет, в адаптере нет никаких ведь полей
Так как после onBindViewHolder список в адаптере могли уже изменить
источник

СП

Сергей П. in StartAndroid Ru Chat
И надо посмотреть как кработают chips, не работал
источник

ВС

Владимир Сакаев... in StartAndroid Ru Chat
Сергей П.
Или просто верстка из кода на линеарах.
Примерно так, из исходного списка:
Создали вложенный горизонтальный линеар1, добавляем в него дочерние элементы из списка пока суммарная их желаемая ширина в пикселях не превысит ширину родителя; как превысила - добавляем элементы в следующие.


При удалении/добавлении проще все сначала пересчитать чем разницу (ну потом можно будет и норм сделать)
я примерно так и сделал, но мне не понравилась вложенность элементов, плюс несколько переменных, которые хранят состояние.
источник

ВС

Владимир Сакаев... in StartAndroid Ru Chat
Ну я говорю, ConstraintLayout. Flow меня выручил.
источник

А

Алекс in StartAndroid Ru Chat
Sergey
Так как после onBindViewHolder список в адаптере могли уже изменить
Хм...
Если правильно понял то сделай метод типа addItem(newItem : T) и deleteItem(deleteItem :T)
И у тебя все изменения идут через адаптер, да и к тому же можно сделать getAllItem() который привязан к list в адаптере.
источник

СП

Сергей П. in StartAndroid Ru Chat
Ну там не переменные  нужны а разумная структура данных.
А staggered layout покопать примеры надо, че то такое он умеет вроде автоматически с мин.доделками. не работал с ним
источник

S

Sergey in StartAndroid Ru Chat
Алекс
Хм...
Если правильно понял то сделай метод типа addItem(newItem : T) и deleteItem(deleteItem :T)
И у тебя все изменения идут через адаптер, да и к тому же можно сделать getAllItem() который привязан к list в адаптере.
А как получить доступ к этим методам в адаптре из статического холдера?

Если я создам объект класса вроде Item в адаптере, где буду сетить и получать этот нужный спискок. В холдер буду отдавать именно объект этого Item. И там вытаскивать item.getList. Такой способ допустим?
источник

А

Алекс in StartAndroid Ru Chat
Sergey
А как получить доступ к этим методам в адаптре из статического холдера?

Если я создам объект класса вроде Item в адаптере, где буду сетить и получать этот нужный спискок. В холдер буду отдавать именно объект этого Item. И там вытаскивать item.getList. Такой способ допустим?
Зачем тебе именно в холдере это получать? Какую цель преследуешь, просто даже на ум не прихрдит для чего тебе нужен лист в холдере.
Но как вариант, сделай интерфейс.
Adapter():someInterface
У которого например метод getAdapterList()
Прокинь интерфейс в createviewholder
И там вызывай метод интерфейса, а адаптер его реализует и ьы получишь лист с данными, но не понимаю зачем это нужно)))
источник