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()" для отображения нового набора данных

Другие вопросы по тегам