Загрузите файл, одновременно коснувшись элементов ленивого столбца в Jetpack Compose.Android

Фору для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Гость
 Загрузите файл, одновременно коснувшись элементов ленивого столбца в Jetpack Compose.

Сообщение Гость »


У меня есть список, и когда я касаюсь элемента, я хочу, чтобы файл, связанный с этим элементом, был загружен. Я написал код для загрузки файла, но у меня возникла проблема. Пользователь может коснуться нескольких элементов одновременно и захотеть загрузить их одновременно. Проблема с моим кодом в том, что когда я одновременно касаюсь нескольких элементов, операции загрузки мешают друг другу.

Класс ViewModel:

class BusinessViewModel(private val userRepository: UserRepository) : ViewModel() { val downloadSqliteDatabaseData: MutableState = mutableStateOf(State.Empty) весело downloadSqliteDatabase (файл: File?, businessId: Long) { viewModelScope.launch { userRepository.downloadSqliteDatabase(businessId).onStart { downloadSqliteDatabaseData.value = State.Loading }.ловить { downloadSqliteDatabaseData.value = State.Error("ОШИБКА", MyHttpStatusCode.NetworkError) }.собирать { downloadSqliteDatabaseData.value = когда (it.status) { HttpStatusCode.OK -> { пытаться { val данные: ByteArray = it.body() файл?.writeBytes(данные) Состояние.Успех("", it.status) } catch (например: исключение) { State.Error("ОШИБКА", MyHttpStatusCode.ConvertDataError) } } MyHttpStatusCode.InvalidUser -> { State.Error("ОШИБКА", it.status) } еще -> { State.Error("ОШИБКА", it.status) } } } } } } Функция создания:
val downloadSqliteDatabaseData по памяти {viewModel.downloadSqliteDatabaseData } DisposableEffect (downloadSqliteDatabaseData) { когда (downloadSqliteDatabaseData) { является State.Empty -> {} это State.Loading -> { //загрузкаDatabaseLoading.value = true } это State.Success -> { //downloadDatabaseLoading.value = false } это State.Error -> { println("Ошибка") //downloadDatabaseLoading.value = false } } onDispose { } } LazyColumn( состояние = lazyListState, модификатор = Модификатор.fillMaxSize(), HorizontalAlignment = Alignment.CenterHorizontally ) { itemsIndexed( предметы = бизнессписок, ключ = { _, элемент -> item.id }, ) { индекс, элемент -> Кликбокс( модификатор = Модификатор .padding(начало = 15.dp, конец = 15.dp) .fillMaxWidth() .height(120.dp), onClick = { val dbPath = Файл("test.txt") viewModel.downloadSqliteDatabase(dbPath, item.id) } ) { //.... } } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Jetpack Compose и DI с Dagger 2
    Гость » » в форуме Android
    0 Ответы
    0 Просмотры
    Последнее сообщение Гость
  • Плавное масштабирование и панорамирование всех элементов в RecyclerView
    Гость » » в форуме Android
    0 Ответы
    0 Просмотры
    Последнее сообщение Гость
  • Как указать определенные модели для разных элементов в html?
    Гость » » в форуме CSS
    0 Ответы
    0 Просмотры
    Последнее сообщение Гость
  • Невозможно загрузить файл с помощью Crow C++ из-за ошибки сегментации.
    Гость » » в форуме Javascript
    0 Ответы
    0 Просмотры
    Последнее сообщение Гость
  • Невозможно загрузить файл с помощью Crow C++ из-за ошибки сегментации.
    Гость » » в форуме C++
    0 Ответы
    0 Просмотры
    Последнее сообщение Гость

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