My Recyclerview在从Firebase存储中获取所有数据之前无法滚动

问题描述 投票:0回答:2

我在这里演示我的问题是

首先,我的应用正在使用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
    }

和通过视图模型获取数据

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

最后,UI观察数据

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

我的适配器正在使用ListAdapter类。

问题是,当我们获取数据时,recyclerview(UI)会回到顶部,并且无法向下滚动,即使我强行向下滚动,该视图也会一直回到顶部,直到存储中的所有数据被拿来。我真的不知道这里的问题,我已经使用listAdapter了很多次,以前也没有遇到过这样的问题(也许是因为Firebase存储(我获取数据的方式)?)。我看到的滚动条正在改变,而数据大小越来越大

我猜想当新数据即将来临时,recycerview会不断刷新...

你们能给我这么建议吗?

***编辑(显示我的recyclerview 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>
android firebase android-recyclerview firebase-storage
2个回答
1
投票

您可以尝试使用测试列表数据,而不是从firebase存储中使用,如果问题仍然存在,请说明firebase存储是否可用


0
投票

我只是简单地解决了问题,方法是将recyclerview与nestScrollview封装在一起(它确实起作用(但是在同时滚动并获取数据时确实滞后,这是不可接受的)。我真的不知道为什么在这种情况下为什么recyclerview滚动行为如此。

© www.soinside.com 2019 - 2024. All rights reserved.