Lazycolumn только обновляет данные из комнаты после прокруткиAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Lazycolumn только обновляет данные из комнаты после прокрутки

Сообщение Anonymous »

После перемещения на экране данные получают через 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»