📜  将 textview 添加到 recyclerview (1)

📅  最后修改于: 2023-12-03 14:53:45.347000             🧑  作者: Mango

在 RecyclerView 中添加 TextView

在 Android 中,RecyclerView 是一个强大的视图容器,用于显示大量数据集。一个常见的需求是在 RecyclerView 的每个列表项中添加 TextView 来显示文本信息。

本文将介绍如何将 TextView 添加到 RecyclerView 中。我们将从以下几个方面进行讨论:

  1. 准备工作
  2. 创建 RecyclerView 适配器
  3. 构建 RecyclerView 列表项布局
  4. 在 RecyclerView 适配器中绑定 TextView
  5. 将 RecyclerView 适配器设置给 RecyclerView
准备工作

在开始之前,我们需要准备一些工作:

  1. 在项目的 build.gradle 文件中添加 RecyclerView 的依赖:implementation 'androidx.recyclerview:recyclerview:1.2.1'
  2. 在布局文件中添加 RecyclerView 组件:<androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerview" ... />
创建 RecyclerView 适配器

下一步是创建 RecyclerView 的适配器。适配器负责创建 RecyclerView 的列表项子视图,并将数据绑定到这些视图上。在适配器中,我们需要创建一个 ViewHolder 类来承载 RecyclerView 的每个列表项。

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<String> mData;

    public MyAdapter(List<String> data) {
        mData = data;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public TextView mTextView;

        public ViewHolder(View itemView) {
            super(itemView);
            mTextView = itemView.findViewById(R.id.textview);
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
        ViewHolder vh = new ViewHolder(v);
        return vh;
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        String text = mData.get(position);
        holder.mTextView.setText(text);
    }

    @Override
    public int getItemCount() {
        return mData.size();
    }
}

在上述适配器代码中,我们创建了一个 MyAdapter 类,并继承了 RecyclerView.Adapter。适配器中的 ViewHolder 类承载每个 RecyclerView 列表项的 TextView 组件。在 onCreateViewHolder 方法中,我们创建了 ViewHolder 实例,并返回该实例。在 onBindViewHolder 方法中,我们绑定数据(即文本信息)到列表项中的 TextView 上。

构建 RecyclerView 列表项布局

在 RecyclerView 的列表项布局中,我们需要添加一个 TextView 组件,用于显示文本信息。在这里,我们创建了一个名为 list_item.xml 的布局,并添加了一个名为 textview 的 TextView。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="16dp">

    <TextView
        android:id="@+id/textview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="16sp" />

</LinearLayout>
在 RecyclerView 适配器中绑定 TextView

在适配器的 onCreateViewHolder 方法中,我们进行了视图绑定并返回了 ViewHolder 实例。在 ViewHolder 中,我们添加了 TextView 组件,并在 onBindViewHolder 方法中将数据(即文本信息)绑定到 TextView 上。

public static class ViewHolder extends RecyclerView.ViewHolder {
    public TextView mTextView;

    public ViewHolder(View itemView) {
        super(itemView);
        mTextView = itemView.findViewById(R.id.textview);
    }
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
    ViewHolder vh = new ViewHolder(v);
    return vh;
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    String text = mData.get(position);
    holder.mTextView.setText(text);
}
将 RecyclerView 适配器设置给 RecyclerView

最后一步是将 RecyclerView 的适配器设置给 RecyclerView。

List<String> data = Arrays.asList("Item 1", "Item 2", "Item 3", "Item 4", "Item 5");
MyAdapter adapter = new MyAdapter(data);

RecyclerView recyclerView = findViewById(R.id.recyclerview);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));

在上述代码片段中,我们创建了一个 MyAdapter 实例,并将其设置为 RecyclerView 的适配器。我们使用 LinearLayoutManager 管理 RecyclerView 的布局,并使用 setLayoutManager 方法将其设置为 RecyclerView 的布局管理器。

至此,我们已经将 TextView 添加到了 RecyclerView 中,每个列表项都包含了一个 TextView 组件,用于显示文本信息。