当我将RecyclerView放入NestedScrollView时,然后onBindViewHolder调用所有行,比如说我有一个大小为30的列表,那么即使没有滚动,也会同时为所有30行调用onBindViewHolder
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它正常工作.
解决方法
高度问题引起的问题.
1)编辑NestedScrollView& RecyclerView如下:
<android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" ...... app:layout_behavior="@string/appbar_scrolling_view_behavior"> ....... <android.support.v7.widget.RecyclerView android:id="@+id/recycler_views" android:layout_width="match_parent" android:layout_height="wrap_content" ..... />
2)确保你编译了’com.android.support:recyclerview-v7:23.2.1′