RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)怎么实现
时间: 2024-03-09 08:51:45 浏览: 80
在onCreateViewHolder方法中,我们需要根据viewType参数来创建不同类型的ViewHolder。一般情况下,我们会在该方法中使用LayoutInflater.from()方法来加载布局文件,然后使用该View对象来实例化ViewHolder。具体的实现步骤如下:
1. 使用LayoutInflater.from()方法加载item布局文件,例如:
```java
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
```
2. 根据viewType参数来创建不同类型的ViewHolder。如果只有一种类型的item布局,可以直接创建一个ViewHolder实例,例如:
```java
MyViewHolder viewHolder = new MyViewHolder(itemView);
```
如果有多种类型的item布局,可以使用switch语句根据viewType参数来创建不同类型的ViewHolder,例如:
```java
switch (viewType) {
case TYPE_A:
viewHolder = new ViewHolderA(itemView);
break;
case TYPE_B:
viewHolder = new ViewHolderB(itemView);
break;
default:
viewHolder = new ViewHolderC(itemView);
break;
}
```
3. 将创建的ViewHolder实例返回,例如:
```java
return viewHolder;
```
完整的onCreateViewHolder方法实现如下:
```java
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
// 加载item布局文件
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
RecyclerView.ViewHolder viewHolder;
// 根据viewType参数来创建不同类型的ViewHolder
switch (viewType) {
case TYPE_A:
viewHolder = new ViewHolderA(itemView);
break;
case TYPE_B:
viewHolder = new ViewHolderB(itemView);
break;
default:
viewHolder = new ViewHolderC(itemView);
break;
}
// 将创建的ViewHolder实例返回
return viewHolder;
}
```
其中,TYPE_A、TYPE_B、TYPE_C是自定义的常量,用于表示不同类型的item布局。在getItemViewType方法中,需要根据position参数返回对应的viewType类型。
阅读全文