让RecyclerView在NestedScrollView中为所有项目调用onBindView?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (317)

这是我的布局文件。

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:scrollbars="none">

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

    <android.support.v7.widget.RecyclerView
        android:id="@+id/featured_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/all_topic_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

此外,我禁用Java代码中的嵌套滚动。

disableNestedScrolling(findViewById(R.id.all_topic_list));
disableNestedScrolling(findViewById(R.id.featured_list));
提问于
用户回答回答于

将此添加到嵌套滚动视图中android:fillViewport="false"

用户回答回答于

如果你将recyclerView的高度固定为特定大小而不是“match-parent”,则会大大减少对onBindViewHolder的调用。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="false">

<android.support.v7.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.vishal.my2.MainActivity">
<android.support.v7.widget.RecyclerView
    android:id="@+id/featured_list"
    android:layout_width="match_parent"
    android:layout_height="300dp" />

<android.support.v7.widget.RecyclerView
    android:id="@+id/all_topic_list"
    android:layout_width="match_parent"
    android:layout_height="300dp" />
</android.support.v7.widget.LinearLayoutCompat>
</ScrollView>
  

扫码关注云+社区

领取腾讯云代金券