android - ViewHolderHeader cannot be cast in onBindViewHolder viewholder -


why having error ?

 java.lang.classcastexception: com.example.pc.mytest.mainitemsrcvadapter$viewholderheader cannot cast com.example.pc.mytest.mainitemsrcvadapter$viewholder 

i trying have recycler 1 header , 1 horizontal.

this class:

public class mainitemsrcvadapter extends recyclerview.adapter<recyclerview.viewholder> {     private arraylist<listmainitem> mainitems;     private context mcontext;     private static final int type_header = 0;     private static final int type_item = 1;       public mainitemsrcvadapter(context context,arraylist<listmainitem> maindata) {         setmaindata(maindata);         this.mainitems = maindata;         this.mcontext = context;     }      public void setmaindata(arraylist<listmainitem> maindatahorizon) {         this.mainitems = maindatahorizon;     }      public arraylist<listmainitem> getmaindata() {         return mainitems;     }     @override     public recyclerview.viewholder oncreateviewholder(viewgroup viewgroup, int viewtype) {         if (viewtype == type_item) {             //inflate layout , pass view holder             view v = layoutinflater.from(viewgroup.getcontext()).inflate(r.layout.main_adapter_horizontal, viewgroup, false);             return new viewholder(v);         } else if (viewtype == type_header) {             //inflate layout , pass view holder             view v =  layoutinflater.from(viewgroup.getcontext()).inflate(r.layout.main_item_adapter, viewgroup, false);             return new viewholderheader(v);         }         throw new runtimeexception("there no type matches type " + viewtype + " + make sure using types correctly");      }      @override     public void onbindviewholder(recyclerview.viewholder holder, int i) {          if (holder instanceof viewholder) { //            string name = getdatavertical().get(position-1).getimages();             string name =mainitems.get(i).geimgname();             string urlimage =mainitems.get(i).getimgurl();              ((viewholder) holder).tv_items.settext(mainitems.get(i).geimgname());            // holder.tv_items.settext(mainitems.get(i).geimgname());              log.d("###", "setting name: " + name);              picasso.with(mcontext)                     .load(r.drawable.upload).resize(240, 120)                     .into(((viewholder) holder).img_items);             log.d("###", "setting url: " + urlimage);          } else if (holder instanceof viewholderheader) {             //cast holder vhheader , set data header.              ((viewholder) holder).tv_items.settext(mainitems.get(i).geimgname());             log.d("####", "header");         }   // //        viewholder.tv_items.settext(mainitems.get(i).geimgname()); //        picasso.with(mcontext) //                .load(mainitems.get(i) //                        .getimgurl()).resize(240, 120) //                .into(viewholder.img_items);      }      @override     public int getitemcount() {         return mainitems.size();     }      @override     public int getitemviewtype(int position) {         if (ispositionheader(position)) {             return type_header;         }          return type_item;     }      private boolean ispositionheader(int position) {         return position == 0;     }       public class viewholder extends recyclerview.viewholder{         private textview tv_items;         private imageview img_items;         private imageview mdataimgview;          public viewholder(view view) {             super(view);              tv_items = (textview)view.findviewbyid(r.id.tv_items_horz);             img_items = (imageview) view.findviewbyid(r.id.img_items_horz);         }         public imageview getmdataimgview()         {             return mdataimgview;         }     }      public class viewholderheader extends recyclerview.viewholder{         private final recyclerview mhorizontalrecyclerview;          public viewholderheader(view v) {             super(v);             mhorizontalrecyclerview = (recyclerview) v.findviewbyid(r.id.recycler_view_horizontal);             mainitemsrcvadapterhorizontal madapter = new mainitemsrcvadapterhorizontal(getmaindata(), mcontext);             linearlayoutmanager layoutmanager                     = new linearlayoutmanager(mcontext, linearlayoutmanager.horizontal, false);              mhorizontalrecyclerview.setlayoutmanager(layoutmanager);             mhorizontalrecyclerview.setadapter(madapter);         }     }     } 

this horizontal

public class mainitemsrcvadapterhorizontal extends recyclerview.adapter<recyclerview.viewholder> {           private final arraylist<listmainitem> mdata;         private final context mcontext;          public mainitemsrcvadapterhorizontal(arraylist<listmainitem> datahorizontal,context context) {             mdata = datahorizontal;             mcontext=context;         }          @override         public recyclerview.viewholder oncreateviewholder(viewgroup parent, int viewtype) {             view v = layoutinflater.from(parent.getcontext()).inflate(r.layout.main_adapter_horizontal, parent, false);             return new mainitemsrcvadapterhorizontal.myviewholderheader(v);         }          @override         public void onbindviewholder(recyclerview.viewholder holder, int position) {             string name = mdata.get(position).geimgname();             log.d("###", "setting name: " + name);             //   ((recyclerviewadapterhorizontal.myviewholderheader) holder).getmdatatextview().settext(name);             ((mainitemsrcvadapterhorizontal.myviewholderheader) holder).getmdataimgview().setimageresource(mcontext.getresources().getidentifier(name, "drawable", "com.example.mohamadmouazen.lebgame.adapters"));          }          @override         public int getitemcount() {             return mdata.size();         }          private class myviewholderheader extends recyclerview.viewholder {             // private final textview mdatatextview;             private final imageview mdataimgview;              public myviewholderheader(view v) {                 super(v);                 //    mdatatextview = (textview) v.findviewbyid(r.id.data_vertical);                 mdataimgview = (imageview) v.findviewbyid(r.id.img_items_horz);             }              public imageview getmdataimgview() {                 return mdataimgview;             } /*        public textview getmdatatextview() {             return mdatatextview;         }*/         }     } 

because making invalid casting.

check code:

        } else if (holder instanceof viewholderheader) {             //cast holder vhheader , set data header.              ((viewholder) holder).tv_items.settext(mainitems.get(i).geimgname());             log.d("####", "header");         } 

you casting viewholderheader viewholder


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -