当前位置: 首页 > 知识库问答 >
问题:

如何在NestedScrollView中放置RecyclerView?[重复]

萧奇
2023-03-14

我在NestedScrollView中有一个RecyclerView。当recyclerView适配器列表较小时,它工作正常。但当列表太大时,它会使我的应用程序崩溃(或造成更多延迟)。我该怎么修呢。代码如下。

XML:

   <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">

                 <com.google.android.material.textview.MaterialTextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="20dp"
                    android:layout_marginTop="10dp"
                    android:layout_marginRight="20dp"
                    android:text="0 Products"
                    android:textSize="16sp"
                    android:theme="@style/radio_font_textview" />

              <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/products_recycler"
                    android:layout_marginLeft="20dp"
                    android:layout_marginRight="20dp"
                    android:layout_marginTop="15dp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"/>


            </LinearLayout>
        </androidx.core.widget.NestedScrollView>

爪哇:

LinearLayoutManager linearLayoutManager = new LinearLayoutManager(ProductView.this);
productRecyclerAdapter = new ProductViewRecyclerAdapter(mData,mData2,ProductView.this);
products_recycler.setAdapter(productRecyclerAdapter);
ViewCompat.setNestedScrollingEnabled(products_recycler, false);
products_recycler.setLayoutManager(linearLayoutManager);

共有1个答案

江凯风
2023-03-14

Recycler view旨在解决与内存相关的问题并提高性能,因为它可以回收屏幕外的视图支架,并轻松处理大量项目。

但是,当您将RecyclerView放入NestedScrollView中时,它将失去回收ViewHolders的能力,因此在将大量数据加载到适配器时会引发问题。

所以,要么减少你正在加载到回收器中的物品的大小/长度,要么提供适当的用例和崩溃堆栈跟踪,这样我们就可以提出适当的解决方案

 类似资料:
  • 我在StackOverflow上看到了一些类似的事件。然而,这些似乎都不适用于我的情况。我遇到的问题是,我的RecyclerView正在工作,但没有显示任何内容。我已经运行了多个测试,试图找出它不工作的原因,但所有测试都支持它正常工作的事实。 getItemCount中的日志返回3,这是正确的数字。我只是不明白为什么它没有显示。我回头看了我在以前的活动中做的回收器视图,它们都在一定程度上匹配(其他

  • 但是大多数投票解决方案的问题是,它调用的所有项,因此,例如,如果它是一个无休止的RecycerView,当用户到达列表的末尾时,您希望发出网络请求,那么使用该解决方案,会重复调用server,因为它会自动到达的最后一项。 不管怎样,如何设置参数以便我可以将放入中(实际上,我希望将像framelayout或RelationVelayout这样的viewgroup作为nestedscrollview的

  • 如何在中使用?设置适配器后,内容不可见。 更新布局代码已更新。

  • 问题内容: 其实我的问题是,当我单击该项目时,它会转到DetailsFragment。但是,当我返回到ItemListFragment时,项目编号增加了,并且发生了重复。请帮助我从中恢复..预先感谢.... ItemListGridAdapter 详细片段 问题答案: 做这个 这样,您的数据将不再重复。试试看,让我知道它是否对您有用。

  • 我有两个垂直放置在中。我需要使它们都可滚动,这就是为什么我将放在中 这是我的布局文件。 这可以很好地工作,但是会为列表中的所有项调用方法。理想情况下,应该只针对列表中可见的项调用它。 我认为问题的发生是因为我将赋予了。关于这个问题的很多答案都表明这个问题在V23.2.1中得到了解决,但我已经在使用V26.1.0了。如何解决这个问题?

  • 我在我的嵌套scrollview中有recyckerview,当我的recrenegerview加载时,我对滚动没有问题,它非常平滑,但它的加载速度非常慢(它不是关于我的数据或网络)慢行是 当我从nestedscrollview(根元素的第一个子元素)中移动回收器视图时,它真的很快。这是我的xml 对于这个xml,它阻塞ui 3-4秒并加载它,但是如果我将recyclerview放在nesteds