界面—使用 RecyclerView 创建动态列表


一、 概述

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值