我试图在recyclerview中添加多个视图。所以首先我添加了getItemView方法,
@Override
public int getItemViewType(int position) {
return type.get(position);
}
然后在oncreateviewholder方法中我添加了这个
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = null;
switch (viewType){
case 0:
v = LayoutInflater.from (parent.getContext ()).inflate (R.layout.view1, parent, false);
case 1:
v = LayoutInflater.from (parent.getContext ()).inflate (R.layout.view2, parent, false);;
case 2:
v = LayoutInflater.from (parent.getContext ()).inflate (R.layout.view3, parent, false);
}
return new ViewHolder(v);
}
但是当它运行时,它会给我java.lang.IllegalArgumentException: itemView may not be null
错误...
答案 0 :(得分:0)
您的type
集合会返回不属于此switch
的错误类型,或者您的错误位于其他位置。
这是我的适配器的一个片段,它完全正常。
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
int layoutResId = (viewType == VIEW_TYPE_HEADER) ? R.layout.item_header : R.layout.item_content;
return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(layoutResId, parent, false));
}
尝试向此开关添加默认大小写,然后查看它是否解析布局。
编辑:请澄清代码中的types
以及如何初始化
答案 1 :(得分:-1)
适配器的getItemViewType()
返回视图类型的number
。由于您有3个观看次数(view1, view2, view3
),因此您应该从getItemViewType()
方法返回3。
试试这个:
@Override
public int getItemViewType(int position) {
return 3;
}