📅  最后修改于: 2023-12-03 14:53:45.347000             🧑  作者: Mango
在 Android 中,RecyclerView 是一个强大的视图容器,用于显示大量数据集。一个常见的需求是在 RecyclerView 的每个列表项中添加 TextView 来显示文本信息。
本文将介绍如何将 TextView 添加到 RecyclerView 中。我们将从以下几个方面进行讨论:
在开始之前,我们需要准备一些工作:
implementation 'androidx.recyclerview:recyclerview:1.2.1'
<androidx.recyclerview.widget.RecyclerView android:id="@+id/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 的列表项布局中,我们需要添加一个 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>
在适配器的 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。
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 组件,用于显示文本信息。