簡體   English   中英

RecyclerViewAdapter中的itemview可能不是null錯誤

[英]itemview may not be null error in RecyclerViewAdapter

我正在嘗試在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錯誤...

您的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以及如何初始化它

適配器的getItemViewType()返回視圖類型的number 由於具有3個視圖( view1, view2, view3 ),因此應從getItemViewType()方法返回3個getItemViewType()

嘗試這個:

@Override
public int getItemViewType(int position) {
        return 3;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM