itemview may not be null error in RecyclerViewAdapter

匿名 (未验证) 提交于 2019-12-03 01:45:01

问题:

I'm trying to add multiple views in a recyclerview. So first I added getItemView method,

 @Override     public int getItemViewType(int position) {              return type.get(position);      } 

Then in the oncreateviewholder method I added this

        @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);  } 

But when run it it's giving me java.lang.IllegalArgumentException: itemView may not be null error...

回答1:

Either your type collection returns wrong types that do not fall into this switch or your error lies somewhere else.

This is a snippet from my adapter and it works perfectly fine.

@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)); } 

Try adding a default case to this switch and see if it parses the layout then.

EDIT: and please clarify what types is in your code and how you initialize it



回答2:

Adapter's getItemViewType() returns the number of view type. As you have 3 views(view1, view2, view3), you should return 3 from getItemViewType() method.

Try this:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!