当我将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′