Я здесь, чтобы продемонстрировать, в чем заключается моя проблема
Во-первых, мое приложение использует архитектуру 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>