要在 RecyclerView 中切换布局,我们需要做以下操作:
接下来,我们可以上代码进行实现。首先,我们需要创建每个布局对应的 ViewHolder。例如,我们创建了一个名为 MultipleViewTypeViewHolder 的 ViewHolder。代码如下:
public class MultipleViewTypeViewHolder extends RecyclerView.ViewHolder { // 你需要绑定 MultipleViewTypeViewHolder 中的 View public MultipleViewTypeViewHolder(View itemView) { super(itemView); // TODO:进行 View 的绑定 } }
然后,我们需要创建一个 RecyclerView.Adapter 并在 onBindViewHolder() 中判断当前的布局类型。以下示例代码显示了此过程:
public class MultipleViewItemViewAdapter extends RecyclerView.Adapter
public static final int LAYOUT_TYPE_ONE = 1;
public static final int LAYOUT_TYPE_TWO = 2;
private List itemList;
public MultipleViewItemViewAdapter(List itemList) {
this.itemList = itemList;
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
if (viewType == LAYOUT_TYPE_ONE) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_one, parent, false);
return new MultipleViewTypeViewHolder(view);
} else if (viewType == LAYOUT_TYPE_TWO) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_two, parent, false);
return new AnotherTypeViewHolder(view);
}
// 如果有更多布局类型,这里则添加相应代码
// 如果没有相应的布局类型,则返回一个默认的 ViewHolder
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_default, parent, false);
return new DefaultViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
if (getItemViewType(position) == LAYOUT_TYPE_ONE) {
// TODO:绑定 LAYOUT_TYPE_ONE ViewHolder
} else if (getItemViewType(position) == LAYOUT_TYPE_TWO) {
// TODO:绑定 LAYOUT_TYPE_TWO ViewHolder
}
// 如果有更多布局类型,这里则添加相应代码
}
// 根据位置返回布局类型,例如:返回 LAYOUT_TYPE_ONE 或 LAYOUT_TYPE_TWO
@Override
public