Даниил Сергеев
Знаток
(499)
1 месяц назад
Да, можно реализовать перемещение элемента из ListView в другой Layout, например, LinearLayout, используя drag&drop. Однако, ListView не идеально подходит для этого, и использование RecyclerView значительно упростит задачу.
Почему RecyclerView лучше:
ListView имеет ограничения в плане кастомизации и эффективности при работе с большим количеством элементов. RecyclerView предоставляет больше контроля над отображением и обновлением элементов, что делает реализацию drag&drop проще и эффективнее.
Как реализовать с RecyclerView:
Настройка RecyclerView: Создайте RecyclerView с адаптером, который будет отображать ваши элементы. Адаптер должен поддерживать перетаскивание (drag&drop).
ItemTouchHelper: Используйте ItemTouchHelper для обработки жестов перетаскивания. ItemTouchHelper.Callback позволит вам переопределить методы для начала перетаскивания, перемещения элемента и отпускания.
Перемещение элемента: В методе onMove вашего ItemTouchHelper.Callback вы будете перемещать элемент внутри RecyclerView.
Удаление и добавление элемента: Когда пользователь отпускает элемент над целевым LinearLayout, вам нужно удалить его из RecyclerView и добавить в LinearLayout. Для этого вам потребуется обновить адаптер RecyclerView и обновить LinearLayout динамически.
Управление данными: Важно синхронизировать данные в вашем адаптере RecyclerView и в LinearLayout. Используйте один источник данных (например, ArrayList или LiveData), который будет обновляться при перемещении элементов.
Можно ли такое реализовать? Или изначально не должно быть listview и весь список надо формировать как набор linear'ов внутри linear'а?