dynamic adding item to NavigationView in Android

安稳与你 提交于 2019-11-27 18:50:55
Pankaj Arora

To add the Item programmatically, we can get a Menu object using getMenu() method of NavigationView and then we can add Items into the navigation drawer using that Menu object.

final Menu menu = navigationView.getMenu();
for (int i = 1; i <= 3; i++) {
   menu.add("Runtime item "+ i);
}

Using SubMenu, we can add a subsection and Items into it.

// adding a section and items into it
final SubMenu subMenu = menu.addSubMenu("SubMenu Title");
for (int i = 1; i <= 2; i++) {
   subMenu.add("SubMenu Item " + i);
}

for more details Check TechnoTalkative.

EDIT: If you want to interact with the menu, use
menu.add(0, itemId, 0, title); and then

 public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

id will give you assigned itemId

Suppose you have two groups, group1 and group2. If you want to dynamically add items to group1, then you can assign priority to group2 to make it always below group1. Then when you add new items to group1, it won't be inserted below group2.

Here is a sample:

<group android:id="@+id/group1" />
<group
    android:id="@+id/group2"
    android:orderInCategory="999">
    <item
        android:checked="false"
        android:id="@+id/item1"
        android:icon="@drawable/ic_inbox_black_24dp"
        android:title="Item1" />
    <item
        android:checked="false"
        android:id="@+id/Item2"
        android:icon="@drawable/ic_inbox_black_24dp"
        android:title="Item2"
        />
</group>

And when you add menu items to group1:

Menu menu = navigationView.getMenu();
menu.add(R.id.group1,Menu.NONE,Menu.NONE,itemName);

This should work. I tested it on Android design library 23.1.1.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!