всех содержащихся в нём элементов? Желательно в виде HashMap где key - это позиция данного элемента, а value - это значение из внутреннего ArrayList?
Чтобы затем уведомить рисайкл о том, что я хочу удалить элемент
для этого вроде есть метод встроенный уведомляющий о удалении элемента из определённой позиции в списке
В адапторе есть методы для этого
Ну дык мне для этого нужно узнать позицию этого элемента. Вопрос: как я её узнаю если у меня удаление элементов реализовано через AlertDialog? :)
ну ты же вызываешь алерт диалог на нажатие на элемент, да?
- Есть массив данных, у элементов есть индексы, есть notify по индексу - Есть DiffUtils, которые сами всё сравнивают и вызывают нужные notify.
Почитай что такое DiffUtils и ListAdapter, будет намного легче
Как можно выбрать элемент для удаления, не выбирая заранее элемент для удаления? Или вы предлагаете юзеру удалить только видимые элементы? А если на разных устройствах разная высота экрана, то пофиг?
У вас диалог открывается на нажатие по элементу? Во вьюхолдере при нажатии получаете позицию элемента
onBindViewHolder получает позицию.
к сожалению нет, оно тут вызывается через меню :) Значит всё-таки будет проще мне эту менюшку выкинуть и реализовать сие непотребство через ActionMode?
ну вообще чисто с точки зрения юзер экспиренса лучше удалять элементы при обращении к определенному элементу
Ну, значит индекс этого элемента в списке по-любому должен быть известен. Причем тут видимые итемы в RV?
При том, что если я тыкну на этот пункт, то соответствующий айтем не пропадёт из RV и мне придётся вручную обновлять RV. Но да ладно, я вроде понял, что проще, легче, красивее и функциональнее будет сделать удаление через ActionMode, а не вот так, через непонятный AlertDialog :)
А откуда твой rv берет список элеменьов? И зачем обновлять rv ручками если есть livedata?
onBindViewHolder получает позицию. Что такое Action Mode? По-моему, у вас перемешаны данные и UI. Вся логика - везде, от этого путаница. В идеале UI только показывает данные и принимает ввод от юзера. Никакая видимость чего-нибудь в UI не должна влиять на логику. Должно быть ровно наоборот.
А вот как правильнее делать насчёт логики и ui. Допустим у меня есть edit text и при нажатии на кнопку текст из edit text надо сохранить в базу данных. А если он пустой то не надо сохранять. Проверку if text.isNotBlank() надо делать во view model, или во фрагмента?
Я просто шаблон mvvm не понимаю. View примерно понятно, viewModel тоже вроде понятно, а вот model я не понимаю как может выглядеть. Можете сказать насколько проект соответствует mvvm? 1) данные вводятся во фрагменте, передаются во viewModel 2) viewModel не занимается этими данными, просто передает в класс ShiftManager, где данные а) сохраняются в database б) проходят некоторую обработку 3) viewModel получает данные из ShiftManager (обычные функции через return, suspend через (Type) -> Unit. 4) viewModel обновляет livedata 5) данные на экране, юзер счастлив
https://geekstand.top/development/ponimanie-mvvm-patterna-dlja-android-v-2021-godu/
единственное, что такое ваш ShiftManager??
Обсуждают сегодня