用RecycleViewAdapter 需要画xml填充每一个子元素,写一个demo
时间: 2024-03-05 17:47:52 浏览: 62
好的,以下是一个使用 RecyclerView 和 RecyclerView.Adapter 的基本示例:
首先,在布局文件中添加 RecyclerView:
```
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
接着,创建一个新的布局文件来定义每个子项的外观。例如,我们可以创建一个名为 `list_item.xml` 的文件:
```
<?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:padding="16dp"
android:orientation="vertical">
<TextView
android:id="@+id/itemTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/itemSubtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp" />
</LinearLayout>
```
在这个示例布局中,我们有一个垂直排列的 LinearLayout,其中包含两个 TextView。这些 TextView 将在 RecyclerView 中的每个项目中显示。
接下来,我们需要创建一个 RecyclerView.Adapter 的子类来管理数据和绑定视图。例如,我们可以创建一个名为 `MyAdapter` 的类:
```
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private List<String> mData;
public MyAdapter(List<String> data) {
this.mData = data;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.list_item, parent, false);
return new MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
String item = mData.get(position);
holder.titleTextView.setText(item);
holder.subtitleTextView.setText("Subtitle for item #" + position);
}
@Override
public int getItemCount() {
return mData.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
public TextView titleTextView;
public TextView subtitleTextView;
public MyViewHolder(View itemView) {
super(itemView);
titleTextView = itemView.findViewById(R.id.itemTitle);
subtitleTextView = itemView.findViewById(R.id.itemSubtitle);
}
}
}
```
在这个示例适配器中,我们有一个名为 `mData` 的字符串列表,它将存储要显示的数据。在 onCreateViewHolder() 方法中,我们使用 LayoutInflater 加载 list_item.xml 布局文件,并将其传递给 MyViewHolder 的构造函数。MyViewHolder 类将用于存储每个子项的视图。在 onBindViewHolder() 方法中,我们获取当前位置的数据并将其绑定到视图上。
最后,我们需要在活动或片段中实例化 RecyclerView 和适配器。例如,我们可以创建一个名为 `MainActivity` 的类:
```
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private MyAdapter mAdapter;
private List<String> mData = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化数据
for (int i = 0; i < 20; i++) {
mData.add("Item #" + i);
}
// 初始化 RecyclerView 和适配器
mRecyclerView = findViewById(R.id.recyclerView);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new MyAdapter(mData);
mRecyclerView.setAdapter(mAdapter);
}
}
```
在这个示例活动中,我们首先初始化要显示的数据。然后,我们实例化 RecyclerView 和适配器,并将其设置为垂直线性布局。最后,我们将适配器设置为 RecyclerView。
这就是使用 RecyclerView 和 RecyclerView.Adapter 的基本示例。
阅读全文