在RecyclerViewAdapter中,itemview可能不是null错误

时间:2017-04-27 15:55:10

标签: java android android-recyclerview

我试图在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错误...

2 个答案:

答案 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;
}