gpt4 book ai didi

android - NestedScrollView onBindViewHolder 内的 RecyclerView 调用所有 getItemCount 大小

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:36:48 24 4
gpt4 key购买 nike

当我将 RecyclerView 放在 NestedScrollView 中时,onBindViewHolder 正在调用所有行,比如我有一个大小为 30 的列表,然后 onBindViewHolder 一次为所有 30 行调用,即使没有滚动也是如此

 RecyclerView list;
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
list.setLayoutManager(layoutManager);
layoutManager.setAutoMeasureEnabled(true);
list.setNestedScrollingEnabled(false);
list.addItemDecoration(new VerticalSpaceItemDecoration(5));
list.setAdapter(adapter);

我的xml是

<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="none"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/grey">
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_views"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/info"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:textAlignment="center"

android:visibility="visible"
/>

但是如果我删除 NestedScrollView 它会正常工作。

最佳答案

我假设,由于您正在使用 appbar_scrolling_view_behavior,因此您正在尝试使用 AppBarLayout 做一些事情。

如果是这样,您可以将 RecyclerView 用作 CoordinatorLayout 的直接子级,并支持 AppBarLayout 滚动,而无需在 NestedScrollView 中嵌套 RecyclerView。

试试这个:CoordinatorLayout 中的 RecyclerView(带有 AppBarLayout 和 CollapsingToolbarLayout):

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_scrollFlags="scroll">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="#55FF00FF"
app:layout_collapseMode="none"/>

</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>

<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>

在您的 Activity 或 CustomView 中:

RecyclerView list;
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
list.setLayoutManager(layoutManager);
list.addItemDecoration(new VerticalSpaceItemDecoration(5));
list.setAdapter(adapter);

关于android - NestedScrollView onBindViewHolder 内的 RecyclerView 调用所有 getItemCount 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com