在NestedScrollView中,对于大数据,Recycler View加载速度非常慢

时间:2017-06-16 04:36:01

标签: java android android-recyclerview android-nestedscrollview

我在sna内添加了RecyclerView。基本上我希望RecyclerView与其他视图一起滚动。我面临的问题是,对于一小组数据,它工作正常,但是每当我启动活动时,对于大量数据(200个条目),它会冻结大约3-5秒然后加载。我删除了NestedScrollView并且它完美无缺,但它并没有为我提供我想要的行为。

(有关额外信息,我正在从SQLite数据库加载数据。滚动没有问题,因为它很流畅。唯一的问题是活动冻结了一段时间)

NestedScrollView

3 个答案:

答案 0 :(得分:8)

RecyclerViewNestedScrollView的这种情况。

RecyclerView正在调用onCreateViewHolder()次,等于您的数据大小。

如果数据有200个项目,则冻结onCreateViewHolder()将被调用200次。

答案 1 :(得分:0)

上述问题是因为当您将WRAP_CONTENT或MATCH_PARENT用作RecyclerView的高度时,NestedScrollView中的RecyclerView作为子级或subChild的高度是不定的。

为我解决了这个问题的一种解决方案是将RecyclerView Height设置为固定大小。您可以将height设置为dp值,也可以将其设置为与设备高度匹配的像素值,如果您的需求需要垂直的Infinitive RecyclerView。

下面是用于在Kotlin中设置recyclerView大小的代码段

    val params = recyclerView.layoutParams
    params.apply {
            width = context.resources.displayMetrics.widthPixels
            height = context.resources.displayMetrics.heightPixels
    }
    recyclerView.layoutParams = params

答案 2 :(得分:-2)

正如Nancy所说,recyclerview.setNestedScrollingEnabled(false);将解决滚动卡住的问题。我也遇到过这种类型的问题,并通过虚假的NestedScroll解决。