android - Navigation drawer Recycler View null pointer Exception -


i working recycleview per material design tutorial,i have done accordingly logcat says:

e/androidruntime: fatal exception: main process: com.portal.college.myapplication, pid: 6541 java.lang.nullpointerexception   @ android.support.v7.widget.recyclerview$adapter.createviewholder(recyclerview.java:5229)   @ android.support.v7.widget.recyclerview$recycler.getviewforposition(recyclerview.java:4453)  @ android.support.v7.widget.recyclerview$recycler.getviewforposition(recyclerview.java:4363)  @ android.support.v7.widget.linearlayoutmanager$layoutstate.next(linearlayoutmanager.java:1961)  @ android.support.v7.widget.linearlayoutmanager.layoutchunk(linearlayoutmanager.java:1370)  @ android.support.v7.widget.linearlayoutmanager.fill(linearlayoutmanager.java:1333)  @ android.support.v7.widget.linearlayoutmanager.onlayoutchildren(linearlayoutmanager.java:562)  @ android.support.v7.widget.recyclerview.dispatchlayout(recyclerview.java:2900)  @ android.support.v7.widget.recyclerview.onlayout(recyclerview.java:3071)  @ android.view.view.layout(view.java:14817)  @ android.view.viewgroup.layout(viewgroup.java:4631)  @ android.widget.relativelayout.onlayout(relativelayout.java:1055)  @ android.view.view.layout(view.java:14817)  @ android.view.viewgroup.layout(viewgroup.java:4631)  @ android.support.v4.widget.drawerlayout.onlayout(drawerlayout.java:1067)  @ android.view.view.layout(view.java:14817)  @ android.view.viewgroup.layout(viewgroup.java:4631)  @ android.widget.framelayout.layoutchildren(framelayout.java:453)  @ android.widget.framelayout.onlayout(framelayout.java:388)  @ android.view.view.layout(view.java:14817)  @ android.view.viewgroup.layout(viewgroup.java:4631)  @ android.widget.linearlayout.setchildframe(linearlayout.java:1671)  @ android.widget.linearlayout.layoutvertical(linearlayout.java:1525)  @ android.widget.linearlayout.onlayout(linearlayout.java:1434)  @ android.view.view.layout(view.java:14817)  @ android.view.viewgroup.layout(viewgroup.java:4631)  @ android.widget.framelayout.layoutchildren(framelayout.java:453)  @ android.widget.framelayout.onlayout(framelayout.java:388)  @ android.view.view.layout(view.java:14817)  @ android.view.viewgroup.layout(viewgroup.java:4631)  @ android.widget.linearlayout.setchildframe(linearlayout.java:1671)  @ android.widget.linearlayout.layoutvertical(linearlayout.java:1525)  @ android.widget.linearlayout.onlayout(linearlayout.java:1434)  @ android.view.view.layout(view.java:14817)  @ android.view.viewgroup.layout(viewgroup.java:4631)  @ android.widget.framelayout.layoutchildren(framelayout.java:453)  @ android.widget.framelayout.onlayout(framelayout.java:388)  @ android.view.view.layout(view.java:14817)  @ android.view.viewgroup.layout(viewgroup.java:4631)  @ android.view.viewrootimpl.performlayout(viewrootimpl.java:1983)  @ android.view.viewrootimpl.performtraversals(viewrootimpl.java:1740)  @ android.view.viewrootimpl.dotraversal(viewrootimpl.java:996)  @ android.view.viewrootimpl$traversalrunnable.run(viewrootimpl.java:5600)  @ android.view.choreographer$callbackrecord.run(choreographer.java:761)  @ android.view.choreographer.docallbacks(choreographer.java:574)  @ android.view.choreographer.doframe(choreographer.java:544)  @ android.view.choreographer$framedisplayeventreceiver.run(choreographer.java:747)  @ android.os.handler.handlecallback(handler.java:733)  @ android.os.handler.dispatchmessage(handler.java:95)  @ android.os.looper.loop(looper.java:136)  @ android.app.activitythread.main(activitythread.java:5001)  @ java.lang.reflect.method.invokenative(native method)  @ java.lang.reflect.method.invoke(method.java:515)  @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:785)  @ com.android.internal.os.zygoteinit.main(zygoteinit.java:601)  @ dalvik.system.nativestart.main(native method) 

main_layout.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     xmlns:app="http://schemas.android.com/apk/res-auto"     android:id="@+id/drawer_layout"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:elevation="7dp">     <linearlayout         android:layout_width="match_parent"         android:layout_height="match_parent"         android:orientation="vertical">         <include             android:id="@+id/app_bar"             layout="@layout/app_bar_main"  />    </linearlayout>     <fragment         android:id="@+id/fragment_navigation_drawer"         android:layout_width="280dp"         android:layout_height="match_parent"         android:layout_gravity="start"         app:layout="@layout/fragment_navigation_drawer"         android:name="com.portal.college.myapplication.navigationdrawerfragment"         tools:layout="@layout/fragment_navigation_drawer"         />    </android.support.v4.widget.drawerlayout> 

fragment layout xml file is: fragment_navigation_drawer.xml

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#8c8c8c" tools:context="com.portal.college.myapplication.navigationdrawerfragment">  <include     android:id="@+id/nav_head"     layout="@layout/nav_header_main"  /> <android.support.v7.widget.recyclerview     android:id="@+id/drawerlist"     android:layout_width="match_parent"      android:layout_height="wrap_content"     > </android.support.v7.widget.recyclerview>  </relativelayout> 

now mainactivity.java

 package com.portal.college.myapplication;  import android.content.intent; import android.os.bundle; import android.support.design.widget.floatingactionbutton; import android.support.design.widget.snackbar; import android.support.v7.widget.recyclerview; import android.view.view; import android.support.design.widget.navigationview; import android.support.v4.view.gravitycompat; import android.support.v4.widget.drawerlayout; import android.support.v7.app.actionbardrawertoggle; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.toolbar; import android.view.menu; import android.view.menuitem;  public class mainactivity extends appcompatactivity         implements navigationview.onnavigationitemselectedlistener { private recyclerview recyclerview;     private toolbar toolbar;     @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);         toolbar = (toolbar) findviewbyid(r.id.toolbar);         setsupportactionbar(toolbar); getsupportactionbar().setdisplayshowhomeenabled(true);         navigationdrawerfragment drawerfragment = (navigationdrawerfragment)                 getsupportfragmentmanager().findfragmentbyid(r.id.fragment_navigation_drawer);          drawerfragment.setup((drawerlayout) findviewbyid(r.id.drawer_layout),toolbar);          floatingactionbutton fab = (floatingactionbutton) findviewbyid(r.id.fab);         fab.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 snackbar.make(view, "replace own action", snackbar.length_long)                         .setaction("action", null).show();             }         });      }      @override     public void onbackpressed() {         drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout);         if (drawer.isdraweropen(gravitycompat.start)) {             drawer.closedrawer(gravitycompat.start);         } else {             super.onbackpressed();         }     }      @override     public boolean oncreateoptionsmenu(menu menu) {         // inflate menu; adds items action bar if present.         getmenuinflater().inflate(r.menu.main, menu);         return true;     }      @override     public boolean onoptionsitemselected(menuitem item) {         int id = item.getitemid();         if(id == r.id.action_settings) {             return true;         }         if(id == r.id.search) {              startactivity(new intent(this, searchactivity.class));         }          return super.onoptionsitemselected(item);      }      @suppresswarnings("statementwithemptybody")     @override     public boolean onnavigationitemselected(menuitem item) {         // handle navigation view item clicks here.         int id = item.getitemid();          drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout);         drawer.closedrawer(gravitycompat.start);         return true;     } } 

navigationdrawerfragment.java

package com.portal.college.myapplication; import android.app.activity; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.widget.drawerlayout; import android.support.v7.app.actionbardrawertoggle; import android.support.v7.widget.linearlayoutmanager; import android.support.v7.widget.recyclerview; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.support.v7.widget.toolbar;  import java.util.arraylist; import java.util.list;      public class navigationdrawerfragment extends fragment {         private actionbardrawertoggle mdrawertoggle;         private drawerlayout mdrawerlayout;         private recyclerview recyclerview;     private vivzadapter adapter;         public navigationdrawerfragment() {             // required empty public constructor         }           @override         public view oncreateview(layoutinflater inflater, viewgroup container,                                  bundle savedinstancestate) {             // inflate layout fragment             view layout = inflater.inflate(r.layout.fragment_navigation_drawer,container,false);             recyclerview = (recyclerview) layout.findviewbyid(r.id.drawerlist);             adapter = new vivzadapter(getactivity(),getdata());              recyclerview.setlayoutmanager(new linearlayoutmanager(getactivity()));             recyclerview.setadapter(adapter);             return layout;         }         public static list<information> getdata(){             list<information> data = new arraylist<>();             int icons[] = {                     r.drawable.ic_menu_camera,                     r.drawable.ic_menu_gallery,                     r.drawable.ic_menu_manage,                     r.drawable.ic_menu_send};             string[] title = {"camera","gallery","settings","send"};             for(int i=0;i<title.length && i<icons.length;i++){                 information current = new information();                 current.iconid = icons[i];                 current.title = title[i];                 data.add(current);             }             return data;          }           public void setup(drawerlayout drawerlayout,toolbar toolbar) {             mdrawerlayout = drawerlayout;             mdrawertoggle = new actionbardrawertoggle(getactivity(), drawerlayout, toolbar, r.string.navigation_drawer_open, r.string.navigation_drawer_close){                 public void ondraweropened(view drawerview){                     super.ondraweropened(drawerview);                      }                 public void ondrawerclosed(view drawerview){                     super.ondrawerclosed(drawerview);                  }              };             mdrawerlayout.setdrawerlistener(mdrawertoggle);             mdrawerlayout.post(new runnable() {                  @override                 public void run() {                     mdrawertoggle.syncstate();                 }             });           /*  containerview = getactivity().findviewbyid(fragment_id);             mdrawerlayout=drawerlayout;             mdrawertoggle = new actionbardrawertoggle(getactivity(), drawerlayout, toolbar, r.string.open_drawer,r.string.close_drawer){                 @suppresslint("newapi")                 public void ondraweropened(view drawerview){                     super.ondraweropened(drawerview);                      if(!muserlearneddrawer){                          muserlearneddrawer = false;                          savetopreferences(getactivity(),key_user_learned_drawer, muserlearneddrawer+"");                      }                      getactivity().invalidateoptionsmenu();                      */                 }      } 

adapter class vivzadapter.cjava

    package com.portal.college.myapplication;  import android.content.context; import android.support.v7.widget.recyclerview; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.textview;  import java.util.collections; import java.util.list;  /**  * created admin on 08-feb-16.  */ public class vivzadapter extends recyclerview.adapter<vivzadapter.myviewholder>{     private final layoutinflater inflater;     list<information> data = collections.emptylist();      public vivzadapter(context context,list<information> data){     inflater=layoutinflater.from(context);         this.data=data; }     @override     public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {         view view = inflater.inflate(r.layout.custom_row,parent,false);         myviewholder holder = new myviewholder(view);         return null;     }       @override     public void onbindviewholder(myviewholder holder, int position) { information current = data.get(position);         holder.title.settext(current.title);         holder.id.setimageresource(current.iconid);     }      @override     public int getitemcount() {              return data.size();      } class myviewholder extends recyclerview.viewholder{     textview title;     imageview id;      public myviewholder(view itemview) {         super(itemview);         title = (textview) itemview.findviewbyid(r.id.listtext);         id = (imageview) itemview.findviewbyid(r.id.listicon);     } } } 

the list item class information.java

  package com.portal.college.myapplication;  /**  * created admin on 08-feb-16.  */ public class information {     int iconid;     string title; } 

list row layout custom_row.xml

    <?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="horizontal" android:layout_width="match_parent"     android:layout_height="match_parent"> <imageview     android:id="@+id/listicon"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:src="@drawable/ic_menu_camera"/>     <textview         android:id="@+id/listtext"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:text="camera"         />          </linearlayout> 

i have gone through of solution on stackoverflow regarding same issue, failed here.

one thing noticed in vivzadapter.java, function name getitemcount() getting data count return data.size(), when change return 0 works without recyclerview, when returned data.size(), gives nullpointerexception.

hope have explained in detail.

any advice appreciated

your vivzadapter.java returning null ,because of @ run time throwing out null pointer exception there.

    package com.portal.college.myapplication;  import android.content.context; import android.support.v7.widget.recyclerview; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.textview;  import java.util.collections; import java.util.list;  /**  * created admin on 08-feb-16.  */ public class vivzadapter extends recyclerview.adapter<vivzadapter.myviewholder>{     private final layoutinflater inflater;     list<information> data = collections.emptylist();      public vivzadapter(context context,list<information> data){     inflater=layoutinflater.from(context);         this.data=data; }     @override     public myviewholder oncreateviewholder(viewgroup parent, int viewtype) {         view view = inflater.inflate(r.layout.custom_row,parent,false);         myviewholder holder = new myviewholder(view);         return holder;     }       @override     public void onbindviewholder(myviewholder holder, int position) { information current = data.get(position);         holder.title.settext(current.title);         holder.id.setimageresource(current.iconid);     }      @override     public int getitemcount() {              return data.size();      } class myviewholder extends recyclerview.viewholder{     textview title;     imageview id;      public myviewholder(view itemview) {         super(itemview);         title = (textview) itemview.findviewbyid(r.id.listtext);         id = (imageview) itemview.findviewbyid(r.id.listicon);     } } } 

above code might solve issue.


Comments

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -