android - Navigation Drawer ListView is empty -


i have app first activity being log-in page. when user logs in sees projects. using listfragment diplay list(since have public projects user sees in one-half of login page). , adding navigation drawer activity after logs in. after lot of confusion able add navigation drawer on activity, has empty list.

draweractivity.java:

public class draweractivity extends activity { private drawerlayout mdrawerlayout; private listview mdrawerlist; private actionbardrawertoggle mdrawertoggle;  private charsequence mdrawertitle; private charsequence mtitle; private string[] mscreentitles;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.private_project_list);     mtitle = mdrawertitle = gettitle();     mscreentitles = getresources().getstringarray(r.array.screen_titles);     mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);     mdrawerlist = (listview) findviewbyid(r.id.left_drawer);      mdrawerlist.setadapter(new arrayadapter<string>(this,             r.layout.drawer_list_item, mscreentitles));     //mdrawerlist.setonitemclicklistener(new draweritemclicklistener());      // enable actionbar app icon behave action toggle nav drawer     getactionbar().setdisplayhomeasupenabled(true);     getactionbar().sethomebuttonenabled(true);      // actionbardrawertoggle ties the proper interactions     // between sliding drawer , action bar app icon     mdrawertoggle = new actionbardrawertoggle(             this,                  /* host activity */             mdrawerlayout,         /* drawerlayout object */             r.drawable.ic_navigation_drawer,  /* nav drawer image replace 'up' caret */             r.string.drawer_open,  /* "open drawer" description accessibility */             r.string.drawer_close  /* "close drawer" description accessibility */     ) {         public void ondrawerclosed(view view) {             getactionbar().settitle(mtitle);             invalidateoptionsmenu(); // creates call onprepareoptionsmenu()         }          public void ondraweropened(view drawerview) {             getactionbar().settitle(mdrawertitle);             invalidateoptionsmenu(); // creates call onprepareoptionsmenu()         }     };     mdrawerlayout.setdrawerlistener(mdrawertoggle);      if (savedinstancestate == null) {         selectitem(0);     } }  /* called whenever call invalidateoptionsmenu() */ @override public boolean onprepareoptionsmenu(menu menu) {     // if nav drawer open, hide action items related content view     return super.onprepareoptionsmenu(menu); }  @override public boolean onoptionsitemselected(menuitem item) {     // action bar home/up action should open or close drawer.     // actionbardrawertoggle take care of this.     if (mdrawertoggle.onoptionsitemselected(item)) {         return true;     }     return super.onoptionsitemselected(item); }  /* click listner listview in navigation drawer */ private class draweritemclicklistener implements listview.onitemclicklistener {     @override     public void onitemclick(adapterview<?> parent, view view, int position, long id) {         selectitem(position);     } }  private void selectitem(int position) {      } } 

privateprojectlistactivity.java: (which extends draweractivity)

public class privateprojectlistactivity extends draweractivity { private final static string tag_title = "title"; private final static string tag_anim_array_id = "animation_array"; private final static string tag_projects = "projects"; private final static string tag_id = "id";  jsonarray projects = null;   @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.private_project_list);     new httpgethandler().execute(); }  private class httpgethandler extends asynctask<string, void, void> {      @override     protected void doinbackground(string... params) {         string jsonurl = "http://canvasflip.com/protected/actions/user.php?action=get-projects&network=escort&index=0&count=100";         httpget httpget = new httpget(jsonurl);         try {             httpresponse httpresponse = mainactivity.httpclient.execute(httpget);             httpentity httpentity = httpresponse.getentity();             inputstream content = httpentity.getcontent();             string result = converttostring(content);             jsonobject jsonobject = new jsonobject(result);             projects = jsonobject.getjsonarray(tag_projects);             privateprojectlistactivity.this.runonuithread(new runnable() {                 @override                 public void run() {                     try{                         arraylist<string> projecttitle = new arraylist<string>();                         arraylist<string> imageid = new arraylist<string>();                         arraylist<string> playid = new arraylist<string>();                         for(int i=0; i<projects.length(); i++) {                             jsonobject p = projects.getjsonobject(i);                             string title = p.getstring(tag_title);                             string id = p.getstring(tag_id);                             string array_anim_id = p.getstring(tag_anim_array_id);                             string imgid = array_anim_id.substring(0, 4);                             projecttitle.add(title);                             imageid.add(imgid);                             playid.add(id);                         }                         string[] arrprojecttitle = new string[projecttitle.size()];                         string[] arrimageid = new string[imageid.size()];                         final string[] pid = new string[playid.size()];                         for(int = 0; i<projecttitle.size(); i++)                             arrprojecttitle[i] = projecttitle.get(i);                         for(int j = 0; j<imageid.size(); j++)                             arrimageid[j] = imageid.get(j);                         for(int k = 0; k<playid.size(); k++)                             pid[k] = playid.get(k);                          bundle b = new bundle();                         b.putstringarray("projecttitle", arrprojecttitle);                         b.putstringarray("imageid", arrimageid);                         privateprojectslistfragment fragment = new privateprojectslistfragment();                         fragment.setarguments(b);                          fragmentmanager fm = getfragmentmanager();                         fragmenttransaction ft = fm.begintransaction();                         ft.replace(r.id.privateprojectscontainer,fragment);                         ft.commit();                     }catch(exception e) {                      }                 }             });         }catch(exception e) {         }         return null;     }      public string converttostring(inputstream inputstream) throws ioexception {         bufferedreader bufferedreader = new bufferedreader(new inputstreamreader(inputstream));         string line = "";         string result = "";         while((line = bufferedreader.readline())!=null) {             result += line;          }         inputstream.close();         return result;         }     } } 

private_project_list.xml:

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.drawerlayout android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/drawer_layout" xmlns:android="http://schemas.android.com/apk/res/android">  <framelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/privateprojectscontainer" android:background="#eeeeee">   </framelayout>  <listview     android:id="@+id/left_drawer"     android:layout_width="240dp"     android:layout_height="match_parent"     android:layout_gravity="start"     android:choicemode="singlechoice"     android:divider="@android:color/transparent"     android:dividerheight="0dp"     android:background="#111"/>     </android.support.v4.widget.drawerlayout> 

plus , toggle button not working. see arrow , , nothing happens on clicking , have slide left open drawer.

i suggest following:

in draweractivity, create navigation drawer, without using oncreate(), using onstart(). oncreate() called in activity extends draweractivity , there you'll call setcontentview

your class so:

public class draweractivity extends activity { private drawerlayout mdrawerlayout; private listview mdrawerlist; private actionbardrawertoggle mdrawertoggle;  private charsequence mdrawertitle; private charsequence mtitle; private string[] mscreentitles;  @override     protected void onstart(){         super.onstart();         mtitle = mdrawertitle = gettitle();         mscreentitles = getresources().getstringarray(r.array.screen_titles);         mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);         mdrawerlist = (listview) findviewbyid(r.id.left_drawer);          mdrawerlist.setadapter(new arrayadapter<string>(this,                 r.layout.drawer_list_item, mscreentitles));         //mdrawerlist.setonitemclicklistener(new draweritemclicklistener());          // enable actionbar app icon behave action toggle nav drawer         getactionbar().setdisplayhomeasupenabled(true);         getactionbar().sethomebuttonenabled(true);          // actionbardrawertoggle ties the proper interactions         // between sliding drawer , action bar app icon         mdrawertoggle = new actionbardrawertoggle(                 this,                  /* host activity */                 mdrawerlayout,         /* drawerlayout object */                 r.drawable.ic_navigation_drawer,  /* nav drawer image replace 'up' caret */                 r.string.drawer_open,  /* "open drawer" description accessibility */                 r.string.drawer_close  /* "close drawer" description accessibility */         ) {             public void ondrawerclosed(view view) {                 getactionbar().settitle(mtitle);                 invalidateoptionsmenu(); // creates call onprepareoptionsmenu()             }              public void ondraweropened(view drawerview) {                 getactionbar().settitle(mdrawertitle);                 invalidateoptionsmenu(); // creates call onprepareoptionsmenu()             }         };         mdrawerlayout.setdrawerlistener(mdrawertoggle);          if (savedinstancestate == null) {             selectitem(0);         } }  /* called whenever call invalidateoptionsmenu() */ @override public boolean onprepareoptionsmenu(menu menu) {     // if nav drawer open, hide action items related content view     return super.onprepareoptionsmenu(menu); }  @override public boolean onoptionsitemselected(menuitem item) {     // action bar home/up action should open or close drawer.     // actionbardrawertoggle take care of this.     if (mdrawertoggle.onoptionsitemselected(item)) {         return true;     }     return super.onoptionsitemselected(item); }  /* click listner listview in navigation drawer */ private class draweritemclicklistener implements listview.onitemclicklistener {     @override     public void onitemclick(adapterview<?> parent, view view, int position, long id) {         selectitem(position);     } }  private void selectitem(int position) {      } } 

in every activity in want use drawer, have build layout current private_project_list.xml, using drawerlayout main container, doby layout of activity first child , navigation drawer layout second child. then, extends activity draweractivity.

antoher suggestion list in teh draweractivity, calling httpgethandler() inside of it, have set adapter when array full, otherwise pass adapter empty array, list empty.

about menu button not displayed

in draweractivity seems missing methods action bar, try add following

@override     protected void onpostcreate(bundle savedinstancestate) {         super.onpostcreate(savedinstancestate);         // sync toggle state after onrestoreinstancestate has occurred.         mdrawertoggle.syncstate();     }      @override     public void onconfigurationchanged(configuration newconfig) {         super.onconfigurationchanged(newconfig);         mdrawertoggle.onconfigurationchanged(newconfig);     } 

Comments