Я работаю над приложением с Jetpack Composable и Kotlin.
У меня есть класс модели, содержащий строковый resourceId, и источник данных, который создает коллекцию объектов модели. Я хотел бы, чтобы эта коллекция была отсортирована на основе строкового ресурса, на который ссылается resourceId.
Но, по-видимому, stringResource() считается компонуемым (почему?), поэтому я не могу вызвать его в лямбда-функции List.sortedBy() ни в моем источнике данных, ни в моем пользовательском интерфейсе.
Какой хороший способ обойти это, чтобы я мог сортировать свою коллекцию в алфавитном порядке?
Моя модель:
Источник данных:
data class Topic(
@StringRes val stringResourceId: Int,
val attendees: Int = 0,
@DrawableRes val imageResourceId: Int
)
class Datasource() {
fun loadTopics(): List<Topic> {
return listOf<Topic>(
Topic(R.string.automotive, 0, R.drawable.automotive),
Topic(R.string.biology, 0, R.drawable.biology),
)
// can't add .sortedBy({ stringResource(it.stringResourceId) })
// because stringResource is composable (!?!) but lambdas are not
}
}
Владилен
Вопрос задан29 мая 2024 г.