Мой Recyclerview не может прокрутить, пока не получит все данные из хранилища Firebase - PullRequest
0 голосов
/ 23 апреля 2020

Я здесь, чтобы продемонстрировать, в чем заключается моя проблема

Во-первых, мое приложение использует архитектуру MVVM. У меня есть хранилище для извлечения всех файлов списка из хранилища Firebase


fun getRestItem(type : String) : LiveData<ArrayList<eachItem>> {
        val list = ArrayList<eachItem>()
        val listStream = MutableLiveData<ArrayList<eachItem>>()
            storage.child(type).listAll().addOnSuccessListener {
                it.items.forEach { item ->
                    item.downloadUrl.addOnSuccessListener { url ->
                        val eachItem = eachItem(url.toString())
                        list.add(eachItem)
                        listStream.value = list
                    }
                }
            }
        return listStream
    }

и viewmodel для получения данных

fun getItem()  : LiveData<ArrayList<eachItem>> {
        return drawRepository.getRestItem("Item")
    }

Наконец, пользовательский интерфейс наблюдает за данными

 model.getItem().observe(viewLifecycleOwner, Observer {
                if (it != null) {
                    val adapter = ItemAdapter()
                    adapter.submitList(it)
                    binding.doilyRecycler.adapter = adapter
                }
            })

Мой адаптер использует класс ListAdapter.

Проблема заключается в том, что, пока мы извлекаем данные, представление recycler (UI) остается наверху и не может быть прокручено вниз, даже если я вынужден прокрутить вниз, представление будет возвращаться к началу, пока не будут получены все данные из хранилища. Я действительно не знаю, в чем здесь проблема, я много раз использовал listAdapter, и раньше я не сталкивался с такой проблемой (может быть, это из-за хранилища в базе данных (как я получаю данные)?). Полоса прокрутки, которую я вижу, меняется, в то время как размер данных становится все больше и больше

Я предполагаю, что представление recycerview продолжает обновляться, пока поступают новые данные ...

Ребята, можете ли вы дать мне такие предложения?

*** edit (показать мое мнение о переработчике xml

 <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/doilyRecycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="vertical"
        app:spanCount="3"
        android:clipToPadding="false"
        tools:listitem="@layout/each_item"
        app:layoutManager="androidx.recyclerview.widget.GridLayoutManager">

    </androidx.recyclerview.widget.RecyclerView>

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

вы можете попробовать использовать данные списка тестов , не из хранилища Firebase , Если вопрос все еще существует, объясните, что хранилище Firebase работает

0 голосов
/ 23 апреля 2020

Я просто устранил проблему, добавив в окно реселлера nestScrollview, он работает (но он действительно запаздывает при одновременной прокрутке и получении данных, это недопустимо). Я не знаю, на самом деле знаю, почему поведение свитка вьюблера выглядит так в этой ситуации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...