文章目录
一、 概述
1.1 布局能力
RecyclerView 库提供了三种布局管理器:
LinearLayoutManager: 将各个项排列在一维列表中。
GridLayoutManager:将所有项排列在二维网格中:
StaggeredGridLayoutManager: 与 GridLayoutManager 类似,但不要求同一行中的列表项具有相同的高度(垂直网格有此要求)或同一列中的列表项具有相同的宽度(水平网格有此要求)。其结果是,同一行或同一列中的列表项可能会错落不齐。
1.2 RecyclerView构成
① RecyclerView是视图的 ViewGroup,它本身就是视图,因此,将RecyclerView 添加到布局中的方式与添加任何其他界面元素相同。
② RecyclerView视图中的每个独立元素都由一个 ViewHolder 对象进行定义。创建 ViewHolder 时,它并没有任何关联的数据。
③ RecyclerView视图中的独立元素通过Adapter 将视图绑定到其数据。可以通过扩展 RecyclerView.Adapter 来定义 Adapter。
1.3 RecyclerView优势
RecyclerView 可以让您轻松高效地显示大量数据。您提供数据并定义每个列表项的外观,而 RecyclerView 库会根据需要动态创建元素。
顾名思义,RecyclerView 会回收这些单个的元素。当列表项滚动出屏幕时,RecyclerView 不会销毁其视图。相反,RecyclerView 会对屏幕上滚动的新列表项重用该视图。这种重用可以显著提高性能,改善应用响应能力并降低功耗。
二、 使用步骤
2.1 步骤一:在Activity或Fragment布局文件中添加RecyclerView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
2.2 步骤二:定义视图项的布局
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/list_item_height"
android:layout_marginLeft="@dimen/margin_medium"
android:layout_marginRight="@dimen/margin_medium"
android:gravity="center_vertical">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/element_text"/>
</FrameLayout>
其中src/main/res/values/strings.xml,src/main/res/values/dimens.xml中的内容需要自己添加
2.3 步骤三:构建适配器(RecyclerView.Adapter)
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
private String[] localDataSet;
private Context mContext;
/**
* Provide a reference to the type of views that you are using
* (custom ViewHolder).
*/
public static class ViewHolder extends RecyclerView.ViewHolder {
private final TextView textView;
public ViewHolder(View view) {
super(view);
// Define click listener for the ViewHolder's View
textView = (TextView) view.findViewById(R.id.textView);
}
public Te