У меня есть объект ActivityUiState (типа ActivityUiState), который имеет список поддействий (также типа ActivityUiState) и список голосовых заметок. Я пытаюсь заполнить ActivityUiState списком поддействий и голосовыми заметками, используя потоки. Каждое из поддействий может иметь свои собственные голосовые заметки, сохраненные в базе данных, которые я хотел бы включить в объекты поддействий при создании списка поддействий. На данный момент код успешно добавляет поддействия и голосовые заметки в ActivityUiState. Однако когда я пытаюсь добавить голосовые заметки для каждого из поддействий, весь объект ActivityUiState не обновляется никакими данными. Что я здесь делаю не так?
var subActivitiesUiState = emptyList()
activitiesRepository.getSubActivitiesPerMainActivity(id).collect { subActivities ->
for (subActivity in subActivities) {
var voiceNotesUiState = emptyList()
// This code block results in an empty activityUiState being returned
/*
voiceNotesRepository.getAllVoiceNotesPerActivity(subActivity.id).collect { voiceNotes ->
for (voiceNote in voiceNotes) {
// Append the mapped voice note to the voice notes list
voiceNotesUiState = voiceNotesUiState + VoiceNoteUiState(
id = voiceNote.id,
uri = voiceNote.uri,
duration = voiceNote.duration,
timestamp = voiceNote.timestamp,
activityId = voiceNote.activityId
)
}
subActivitiesUiState = subActivitiesUiState + ActivityUiState(
id = subActivity.id,
title = subActivity.title,
note = subActivity.note,
startTime = subActivity.startTime,
endTime = subActivity.endTime,
voiceNotesUiState = voiceNotesUiState,
mainActivityId = subActivity.mainActivityId
)
}
*/
subActivitiesUiState = subActivitiesUiState + ActivityUiState(
id = subActivity.id,
title = subActivity.title,
note = subActivity.note,
startTime = subActivity.startTime,
endTime = subActivity.endTime,
voiceNotesUiState = voiceNotesUiState,//TODO: Add the voice notes of the sub-activity
mainActivityId = subActivity.mainActivityId
)
}
activityUiState.update {
ActivityUiState(
id = activity.id,
title = activity.title,
note = activity.note,
startTime = activity.startTime,
endTime = activity.endTime,
subActivitiesUiState = subActivitiesUiState
)
}
var voiceNotesUiState = emptyList()
voiceNotesRepository.getAllVoiceNotesPerActivity(id).collect { voiceNotes ->
for (voiceNote in voiceNotes) {
// Append the mapped voice note to the voice notes list
voiceNotesUiState = voiceNotesUiState + VoiceNoteUiState(
id = voiceNote.id,
uri = voiceNote.uri,
duration = voiceNote.duration,
timestamp = voiceNote.timestamp,
activityId = voiceNote.activityId
)
}
activityUiState.update { it ->
it.copy(
voiceNotesUiState = voiceNotesUiState
)
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... sing-flows
Вложенное заполнение объектов с использованием потоков ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1764616453
Anonymous
У меня есть объект ActivityUiState (типа ActivityUiState), который имеет список поддействий (также типа ActivityUiState) и список голосовых заметок. Я пытаюсь заполнить ActivityUiState списком поддействий и голосовыми заметками, используя потоки. Каждое из поддействий может иметь свои собственные голосовые заметки, сохраненные в базе данных, которые я хотел бы включить в объекты поддействий при создании списка поддействий. На данный момент код успешно добавляет поддействия и голосовые заметки в ActivityUiState. Однако когда я пытаюсь добавить голосовые заметки для каждого из поддействий, весь объект ActivityUiState не обновляется никакими данными. Что я здесь делаю не так?
var subActivitiesUiState = emptyList()
activitiesRepository.getSubActivitiesPerMainActivity(id).collect { subActivities ->
for (subActivity in subActivities) {
var voiceNotesUiState = emptyList()
// This code block results in an empty activityUiState being returned
/*
voiceNotesRepository.getAllVoiceNotesPerActivity(subActivity.id).collect { voiceNotes ->
for (voiceNote in voiceNotes) {
// Append the mapped voice note to the voice notes list
voiceNotesUiState = voiceNotesUiState + VoiceNoteUiState(
id = voiceNote.id,
uri = voiceNote.uri,
duration = voiceNote.duration,
timestamp = voiceNote.timestamp,
activityId = voiceNote.activityId
)
}
subActivitiesUiState = subActivitiesUiState + ActivityUiState(
id = subActivity.id,
title = subActivity.title,
note = subActivity.note,
startTime = subActivity.startTime,
endTime = subActivity.endTime,
voiceNotesUiState = voiceNotesUiState,
mainActivityId = subActivity.mainActivityId
)
}
*/
subActivitiesUiState = subActivitiesUiState + ActivityUiState(
id = subActivity.id,
title = subActivity.title,
note = subActivity.note,
startTime = subActivity.startTime,
endTime = subActivity.endTime,
voiceNotesUiState = voiceNotesUiState,//TODO: Add the voice notes of the sub-activity
mainActivityId = subActivity.mainActivityId
)
}
activityUiState.update {
ActivityUiState(
id = activity.id,
title = activity.title,
note = activity.note,
startTime = activity.startTime,
endTime = activity.endTime,
subActivitiesUiState = subActivitiesUiState
)
}
var voiceNotesUiState = emptyList()
voiceNotesRepository.getAllVoiceNotesPerActivity(id).collect { voiceNotes ->
for (voiceNote in voiceNotes) {
// Append the mapped voice note to the voice notes list
voiceNotesUiState = voiceNotesUiState + VoiceNoteUiState(
id = voiceNote.id,
uri = voiceNote.uri,
duration = voiceNote.duration,
timestamp = voiceNote.timestamp,
activityId = voiceNote.activityId
)
}
activityUiState.update { it ->
it.copy(
voiceNotesUiState = voiceNotesUiState
)
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79820983/nested-populating-of-objects-using-flows[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия