Reputation: 7519
I'm using this helper class to create a navigation drawer in my app and I've got it working successfully to add data dynamically from json file:
NavMenuItem createMenu = null;
NavDrawerItem[] menu = new NavDrawerItem[]{};
int i = 1;
for (Post post : PostsActivity.this.posts){
createMenu = NavMenuItem.create(i, post.title+i, false, this);
menu = new NavDrawerItem[]{createMenu};
i++;
}
NavDrawerActivityConfiguration navDrawerActivityConfiguration = new NavDrawerActivityConfiguration();
navDrawerActivityConfiguration.setMainLayout(R.layout.activity_drawer);
navDrawerActivityConfiguration.setDrawerLayoutId(R.id.drawer_layout);
navDrawerActivityConfiguration.setLeftDrawerId(R.id.nav_drawer);
navDrawerActivityConfiguration.setNavItems(menu);
navDrawerActivityConfiguration.setDrawerShadow(R.drawable.drawer_shadow);
navDrawerActivityConfiguration.setDrawerOpenDesc(R.string.drawer_open);
navDrawerActivityConfiguration.setDrawerCloseDesc(R.string.drawer_close);
navDrawerActivityConfiguration.setBaseAdapter(
new NavDrawerAdapter(this, R.layout.listview_drawer_item, menu ));
The problem is that only the last data in the posts
array is displayed. How do I iterate the array so that it adds all the data to the NavDrawerItem
array?
This is how data is added to the array in the original example given by the author:
NavDrawerItem[] menu = new NavDrawerItem[] {
NavMenuSection.create( 100, "Demos"),
NavMenuItem.create(101,"List/Detail (Fragment)", "navdrawer_friends", false, this),
NavMenuItem.create(102, "Airport (AsyncTask)", "navdrawer_airport", true, this),
NavMenuSection.create(200, "General"),
NavMenuItem.create(202, "Rate this app", "navdrawer_rating", false, this),
NavMenuItem.create(203, "Eula", "navdrawer_eula", false, this),
NavMenuItem.create(204, "Quit", "navdrawer_quit", false, this)};
Upvotes: 0
Views: 181
Reputation:
Try this:
ArrayList<NavDrawerItem> menu = new ArrayList<NavDrawerItem>();
int i = 1;
for (Post post : PostsActivity.this.posts){
menu.add(NavMenuItem.create(i, post.title+i, false, this));
i++;
}
NavDrawerItem[] navItems = new NavDrawerItem[menu.size()];
navItems = menu.toArray(navItems);
NavDrawerActivityConfiguration navDrawerActivityConfiguration = new NavDrawerActivityConfiguration();
navDrawerActivityConfiguration.setMainLayout(R.layout.activity_drawer);
navDrawerActivityConfiguration.setDrawerLayoutId(R.id.drawer_layout);
navDrawerActivityConfiguration.setLeftDrawerId(R.id.nav_drawer);
navDrawerActivityConfiguration.setNavItems(navItems);
navDrawerActivityConfiguration.setDrawerShadow(R.drawable.drawer_shadow);
navDrawerActivityConfiguration.setDrawerOpenDesc(R.string.drawer_open);
navDrawerActivityConfiguration.setDrawerCloseDesc(R.string.drawer_close);
navDrawerActivityConfiguration.setBaseAdapter(
new NavDrawerAdapter(this, R.layout.listview_drawer_item, navItems ));
Upvotes: 1