Android 用RecyclerView替换ListView时注意到
正在尝试将Android 用RecyclerView替换ListView时注意到,android,android-recyclerview,gridlayoutmanager,Android,Android Recyclerview,Gridlayoutmanager,正在尝试将列表视图替换为回收视图。 不确定是否有人在使用RecyclerView时遇到问题。我注意到,在不更改视图项布局的情况下,使用RecyclerView时,滚动不如使用ListView时平滑,并且仅对我的视图项布局GridLayoutManager有效 有什么建议吗?谢谢 视图项布局没有更改,并且与ListView(具有>1000个数据)配合良好 使用列表视图: <ListView android:id="@+id/list_view" andr
列表视图
替换为回收视图
。
不确定是否有人在使用RecyclerView
时遇到问题。我注意到,在不更改视图项布局的情况下,使用RecyclerView
时,滚动不如使用ListView
时平滑,并且仅对我的视图项布局GridLayoutManager
有效
有什么建议吗?谢谢
视图项布局没有更改,并且与ListView
(具有>1000个数据)配合良好
使用列表视图
:
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
public class UsingListViewAdapter extends BaseAdapter;
UsingListViewAdapter mAdaptor new UsingListViewAdapter(null, mSelectListener);
mListView = (ListView) view.findViewById(R.id.list_view);
mListView.setAdapter(mAdaptor);
<android.support.v7.widget.RecyclerView
android:id="@+id/list_view"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent”/>
public class UsingRecyclerViewAdapter extends RecyclerView.Adapter< UsingRecyclerViewAdapter.RowViewHolder>
implements View.OnClickListener, View.OnLongClickListener;
UsingRecyclerViewAdapter mAdaptor new UsingRecyclerViewAdapter(null, mSelectListener)
mRecyclerView = (RecyclerView) view.findViewById(R.id.list_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new GridLayoutManager(getActivity(), 1);
//mLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setAdapter(mAdaptor);
ListView
和RecyclerView
的适配器中使用的视图项是相同的布局,其中一行有两个元素并排使用layout\u width=“0dp”/layout\u weight=“1”拉伸以填充该行
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top" >
<LinearLayout
android:id="@+id/row"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="6dp"
android:orientation="horizontal"
android:visibility="gone"
>
<include
android:id="@+id/row_cell_one"
layout="@layout/cell_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<include
android:id="@+id/row_cell_two"
layout="@layout/cell_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
首先要注意的是,使用ListView
的滚动比使用RecyclerView
的滚动要平滑得多
如果使用LinearLayoutManager
,则行中显示的项目会被弄乱。这两个项目不会占据显示的全部宽度,并且应该覆盖在其他元素顶部的元素(例如img.top==overlay\img.top
)被放置在下面(例如overlay\u img.top==img.top+img.height
),并且在叠加\u img
下方具有相同高度的空白
只有在更改为使用mLayoutManager=newgridlayoutmanager(getActivity(),1);
之后,行才会正确显示
使用RecyclerView
(使用LinearLayoutManager
)它显示为:
+---------------------+
(cell | (cell
one) | two)
+---------------------+
+---------------------+
(cell one) | (cell two)
+---------------------+
使用ListView
和RecyclerView
(使用GridLayoutManager
)将其显示为:
+---------------------+
(cell | (cell
one) | two)
+---------------------+
+---------------------+
(cell one) | (cell two)
+---------------------+
当在Android os 4..4.2及以下版本的设备上运行时,在滚动时会感觉到不同,当在Nexus 5上运行棒棒糖时,会感觉到与使用ListView相同的平滑度。