android - navigation drawer with pinned (sticky) headers -


i have program showing sticky headers in listview. want apply navigation drawer. below code pinnedsectionlistactivity.java. how input listview in navigation drawer menu?

import com.hb.examples.pinnedsection.r;    public class pinnedsectionlistactivity extends listactivity implements onclicklistener {        static class simpleadapter extends arrayadapter<item> implements com.hb.examples.pinnedsectionlistview.pinnedsectionlistadapter {            private static final int[] colors = new int[] {              r.color.green_light, r.color.orange_light,              r.color.blue_light, r.color.red_light };            public simpleadapter(context context, int resource, int textviewresourceid) {              super(context, resource, textviewresourceid);              generatedataset('a', 'z', false);          }            public void generatedataset(char from, char to, boolean clear) {          	          	if (clear) clear();          	              final int sectionsnumber = - + 1;              preparesections(sectionsnumber);                int sectionposition = 0, listposition = 0;              (char i=0; i<sectionsnumber; i++) {                  item section = new item(item.section, string.valueof((char)('a' + i)));                  section.sectionposition = sectionposition;                  section.listposition = listposition++;                  onsectionadded(section, sectionposition);                  add(section);                    final int itemsnumber = (int) math.abs((math.cos(2f*math.pi/3f * sectionsnumber / (i+1f)) * 25f));                  (int j=0;j<itemsnumber;j++) {                      item item = new item(item.item, section.text.touppercase(locale.english) + " - " + j);                      item.sectionposition = sectionposition;                      item.listposition = listposition++;                      add(item);                  }                    sectionposition++;              }          }                    protected void preparesections(int sectionsnumber) { }          protected void onsectionadded(item section, int sectionposition) { }            @override public view getview(int position, view convertview, viewgroup parent) {              textview view = (textview) super.getview(position, convertview, parent);              view.settextcolor(color.dkgray);              view.settag("" + position);              item item = getitem(position);              if (item.type == item.section) {                  //view.setonclicklistener(pinnedsectionlistactivity.this);                  view.setbackgroundcolor(parent.getresources().getcolor(colors[item.sectionposition % colors.length]));              }              return view;          }            @override public int getviewtypecount() {              return 2;          }            @override public int getitemviewtype(int position) {              return getitem(position).type;          }            @override          public boolean isitemviewtypepinned(int viewtype) {              return viewtype == item.section;          }        }        static class fastscrolladapter extends simpleadapter implements sectionindexer {            private item[] sections;            public fastscrolladapter(context context, int resource, int textviewresourceid) {              super(context, resource, textviewresourceid);          }            @override protected void preparesections(int sectionsnumber) {              sections = new item[sectionsnumber];          }            @override protected void onsectionadded(item section, int sectionposition) {              sections[sectionposition] = section;          }            @override public item[] getsections() {              return sections;          }            @override public int getpositionforsection(int section) {              if (section >= sections.length) {                  section = sections.length - 1;              }              return sections[section].listposition;          }            @override public int getsectionforposition(int position) {              if (position >= getcount()) {                  position = getcount() - 1;              }              return getitem(position).sectionposition;          }        }    	static class item {    		public static final int item = 0;  		public static final int section = 1;    		public final int type;  		public final string text;    		public int sectionposition;  		public int listposition;    		public item(int type, string text) {  		    this.type = type;  		    this.text = text;  		}    		@override public string tostring() {  			return text;  		}    	}    	private boolean hasheaderandfooter;  	private boolean isfastscroll;  	private boolean addpadding;  	private boolean isshadowvisible = true;  	private int mdatasetupdatecount;    	@override  	protected void oncreate(bundle savedinstancestate) {  		super.oncreate(savedinstancestate);  		setcontentview(r.layout.activity_main);  		if (savedinstancestate != null) {  		    isfastscroll = savedinstancestate.getboolean("isfastscroll");  		    addpadding = savedinstancestate.getboolean("addpadding");  		    isshadowvisible = savedinstancestate.getboolean("isshadowvisible");  		    hasheaderandfooter = savedinstancestate.getboolean("hasheaderandfooter");  		}  		initializeheaderandfooter();  		initializeadapter();  		initializepadding();  	}        @override  	protected void onsaveinstancestate(bundle outstate) {  	    super.onsaveinstancestate(outstate);  	    outstate.putboolean("isfastscroll", isfastscroll);  	    outstate.putboolean("addpadding", addpadding);  	    outstate.putboolean("isshadowvisible", isshadowvisible);  	    outstate.putboolean("hasheaderandfooter", hasheaderandfooter);  	}    	@override  	protected void onlistitemclick(listview l, view v, int position, long id) {  	    item item = (item) getlistview().getadapter().getitem(position);  	    if (item != null) {  	        toast.maketext(this, "item " + position + ": " + item.text, toast.length_short).show();  	    } else {  	        toast.maketext(this, "item " + position, toast.length_short).show();  	    }  	}    	@override  	public boolean oncreateoptionsmenu(menu menu) {  		getmenuinflater().inflate(r.menu.main, menu);  		menu.getitem(0).setchecked(isfastscroll);  		menu.getitem(1).setchecked(addpadding);  		menu.getitem(2).setchecked(isshadowvisible);  		return true;  	}    	@override  	public boolean onoptionsitemselected(menuitem item) {  	    switch (item.getitemid()) {      	    case r.id.action_fastscroll:      	        isfastscroll = !isfastscroll;      	        item.setchecked(isfastscroll);      	        initializeadapter();      	        break;      	    case r.id.action_addpadding:      	        addpadding = !addpadding;      	        item.setchecked(addpadding);      	        initializepadding();      	        break;      	    case r.id.action_showshadow:      	        isshadowvisible = !isshadowvisible;      	        item.setchecked(isshadowvisible);      	        ((pinnedsectionlistview)getlistview()).setshadowvisible(isshadowvisible);      	        break;      	    case r.id.action_showheaderandfooter:      	        hasheaderandfooter = !hasheaderandfooter;      	        item.setchecked(hasheaderandfooter);      	        initializeheaderandfooter();      	        break;      	    case r.id.action_updatedataset:      	    	updatedataset();      	    	break;  	    }  	    return true;  	}    	private void updatedataset() {  		mdatasetupdatecount++;  		simpleadapter adapter = (simpleadapter) getlistadapter();  		switch (mdatasetupdatecount % 4) {  			case 0: adapter.generatedataset('a', 'b', true); break;  			case 1: adapter.generatedataset('c', 'm', true); break;  			case 2: adapter.generatedataset('p', 'z', true); break;  			case 3: adapter.generatedataset('a', 'z', true); break;  		}  		adapter.notifydatasetchanged();  	}  	  	private void initializepadding() {  	    float density = getresources().getdisplaymetrics().density;  	    int padding = addpadding ? (int) (16 * density) : 0;  	    getlistview().setpadding(padding, padding, padding, padding);  	}        private void initializeheaderandfooter() {          setlistadapter(null);          if (hasheaderandfooter) {              listview list = getlistview();                layoutinflater inflater = layoutinflater.from(this);              textview header1 = (textview) inflater.inflate(android.r.layout.simple_list_item_1, list, false);              header1.settext("first header");              list.addheaderview(header1);                textview header2 = (textview) inflater.inflate(android.r.layout.simple_list_item_1, list, false);              header2.settext("second header");              list.addheaderview(header2);                textview footer = (textview) inflater.inflate(android.r.layout.simple_list_item_1, list, false);              footer.settext("single footer");              list.addfooterview(footer);          }          initializeadapter();      }        @suppresslint("newapi")      private void initializeadapter() {          getlistview().setfastscrollenabled(isfastscroll);          if (isfastscroll) {              if (build.version.sdk_int >= build.version_codes.honeycomb) {                  getlistview().setfastscrollalwaysvisible(true);              }              setlistadapter(new fastscrolladapter(this, android.r.layout.simple_list_item_1, android.r.id.text1));          } else {              setlistadapter(new simpleadapter(this, android.r.layout.simple_list_item_1, android.r.id.text1));          }      }        @override      public void onclick(view v) {          toast.maketext(this, "item: " + v.gettag() , toast.length_short).show();      }    }