После перемещения на экране данные получают через viewModel и room , но lazycolumn не обновляются, только после прокрутки. Поэтому я перезаписываю этот список, вызывающий функцию getSectionListupdated () . В Collections Screen я сохраняю этот список в переменной, которая заполняет Lazycolumn. Я также попробовал , помните и mutablestateof , безрезультатно.class CollectionViewModel(val dao: StickerDao) : ViewModel() {
fun getSectionListUpdated(): List {
var counter = 0
for (section in sectionList) {
viewModelScope.launch {
sectionList[counter].ownedStickersSection =
dao.getOwnedStickersBySection(section.sectionName).size
}
counter += 1
}
var sectionListUpdated = sectionList
return sectionListUpdated
}
var sectionList = listOf(
SectionsStats("First Section", 0, 8),
SectionsStats("Stadiums", 0, 11),
SectionsStats("Qatar", 0, 20),
SectionsStats("Ecuador", 0, 20),
SectionsStats("Senegal", 0, 20),
SectionsStats("Netherlands", 0, 20),
SectionsStats("England", 0, 20),
SectionsStats("Iran", 0, 20),
)
}
< /code>
Вот экран: < /p>
@Composable
fun CollectionScreen(navController: NavController) {
val context = LocalContext.current.applicationContext
val dao = StickerDatabase.getInstance(requireNotNull(context).applicationContext).stickerDao
val viewModel = viewModel(
factory = object : ViewModelProvider.Factory {
override fun create(modelClass: Class): T {
if (modelClass.isAssignableFrom(CollectionViewModel::class.java))
return CollectionViewModel(dao) as T
throw IllegalArgumentException("Unknown ViewModel")
}
}
)
var sectionList = viewModel.getSectionListUpdated()
LazyColumn {
items(sectionList) { section ->
CardSection(navController, section.sectionName, section.ownedStickersSection, section.allStickersSection)
}
}
}
< /code>
Вот класс данных: < /p>
data class SectionsStats(
val sectionName: String,
var ownedStickersSection: Int,
val allStickersSection: Int,
)
< /code>
А вот дао: < /p>
@Dao
interface StickerDao {
@Query("SELECT * FROM sticker_table WHERE section = :section AND owned >= 1 ")
suspend fun getOwnedStickersBySection(section: String): List
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -scrolling
Lazycolumn только обновляет данные из комнаты после прокрутки ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1753265896
Anonymous
После перемещения на экране данные получают через [b] viewModel [/b] и [b] room [/b], но [b] lazycolumn [/b] не обновляются, только после прокрутки. Поэтому я перезаписываю этот список, вызывающий функцию getSectionListupdated () . В Collections Screen я сохраняю этот список в переменной, которая заполняет Lazycolumn. Я также попробовал [b], помните [/b] и [b] mutablestateof [/b], безрезультатно.class CollectionViewModel(val dao: StickerDao) : ViewModel() {
fun getSectionListUpdated(): List {
var counter = 0
for (section in sectionList) {
viewModelScope.launch {
sectionList[counter].ownedStickersSection =
dao.getOwnedStickersBySection(section.sectionName).size
}
counter += 1
}
var sectionListUpdated = sectionList
return sectionListUpdated
}
var sectionList = listOf(
SectionsStats("First Section", 0, 8),
SectionsStats("Stadiums", 0, 11),
SectionsStats("Qatar", 0, 20),
SectionsStats("Ecuador", 0, 20),
SectionsStats("Senegal", 0, 20),
SectionsStats("Netherlands", 0, 20),
SectionsStats("England", 0, 20),
SectionsStats("Iran", 0, 20),
)
}
< /code>
Вот экран: < /p>
@Composable
fun CollectionScreen(navController: NavController) {
val context = LocalContext.current.applicationContext
val dao = StickerDatabase.getInstance(requireNotNull(context).applicationContext).stickerDao
val viewModel = viewModel(
factory = object : ViewModelProvider.Factory {
override fun create(modelClass: Class): T {
if (modelClass.isAssignableFrom(CollectionViewModel::class.java))
return CollectionViewModel(dao) as T
throw IllegalArgumentException("Unknown ViewModel")
}
}
)
var sectionList = viewModel.getSectionListUpdated()
LazyColumn {
items(sectionList) { section ->
CardSection(navController, section.sectionName, section.ownedStickersSection, section.allStickersSection)
}
}
}
< /code>
Вот класс данных: < /p>
data class SectionsStats(
val sectionName: String,
var ownedStickersSection: Int,
val allStickersSection: Int,
)
< /code>
А вот дао: < /p>
@Dao
interface StickerDao {
@Query("SELECT * FROM sticker_table WHERE section = :section AND owned >= 1 ")
suspend fun getOwnedStickersBySection(section: String): List
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79711154/lazycolumn-only-updates-data-from-room-after-scrolling[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия