Android: можно / рекомендуется ли взаимодействовать с Bound Service из Adapter?
У меня есть некоторые сложные данные, моделируемые классом данных, с неизменяемыми и изменяемыми полями:
data class book (
val ISBN: String,
val Author: String,
...
var borrowed: Boolean
)
И я пытаюсь найти способ отобразить несколько его экземпляров в RecyclerView.
Я считаю, что единственная задача адаптера - отображать данные, однако, передача целой группы объектов не кажется мне действительно разумной, тем более что не все поля всех экземпляров должны были бы отображаться.
Поэтому я решил использовать список ISBN в качестве набора данных адаптера и при необходимости извлечь соответствующий объект из Bound Service.
Однако я не уверен, что это правильный путь, поскольку у адаптера нет четкого жизненного цикла, и я не могу понять, где можно привязать / открепить сервис.
Тогда возникает вопрос: в адаптере Android, где я должен привязаться к Bound Service, чтобы получить данные для отображения? Это что-то вроде ереси дизайна?
1 ответ
Я думаю, что вы делаете это неправильно. То, как вы хотите это сделать, очень плохо с точки зрения производительности.
Передача целой пачки объектов не кажется вам действительно разумной, но это правильный способ использовать обзор переработчика для лучшей производительности и избежать странного поведения.
Если вы хотите получить данные из службы:
- инициализировать ваш просмотрщик с пустым набором данных (загрузка...)
- запустите ваш сервис, чтобы получить ваш набор данных
- уведомить о своей деятельности и передать свой набор данных
- ваша активность поменять ваш адаптер переработчика с новым набором данных
- ваше окно-утилита "notifyDataSetChanged()" для отображения нового набора данных