example - navigationview android
Agregando elemento dinĂ¡mico a NavigationView en Android (2)
Para agregar el elemento mediante programación, podemos obtener un objeto de menú utilizando el método getMenu()
de NavigationView
y luego podemos agregar elementos en el cajón de navegación utilizando ese objeto de Menu
.
final Menu menu = navigationView.getMenu();
for (int i = 1; i <= 3; i++) {
menu.add("Runtime item "+ i);
}
Usando SubMenu
, podemos agregar una subsección y elementos en él.
// 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);
}
Para más detalles consultar tecnotécnica .
EDITAR: Si desea interactuar con el menú, use
menu.add(0, itemId, 0, title);
y entonces
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
ID te dará el itemId asignado
Quiero crear NavigationDrawer
con la posibilidad de agregar nuevos elementos (como la aplicación yahoo weather con la adición de nuevas ciudades). He trabajado NavigationDrawer
con NavigationView
, en el menú Tengo campos permanentes:
<group
android:id="@+id/group"
android:checkableBehavior="single">
<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>
Estoy tratando de agregar nuevo artículo este método:
public boolean addNewItem(String itemName){
Menu menu = navigationView.getMenu();
menu.add(R.id.group,Menu.NONE,Menu.NONE,itemName);
return true;
}
Y no estoy obteniendo exactamente lo que quiero:
¿Alguien tiene una idea de cómo resolver este problema? ¿O por qué está sucediendo esto? No sé dónde y cómo se puede mantener información sobre los elementos agregados. ¿Algunas ideas?
Supongamos que tiene dos grupos, grupo1 y grupo2. Si desea agregar elementos dinámicamente al grupo1, puede asignar prioridad al grupo2 para que esté siempre debajo del grupo1. Luego, cuando agrega nuevos elementos al grupo1, no se insertará debajo del grupo2.
Aquí hay una muestra:
<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>
Y cuando agrega elementos de menú a group1:
Menu menu = navigationView.getMenu();
menu.add(R.id.group1,Menu.NONE,Menu.NONE,itemName);
Esto debería funcionar. Lo probé en la librería de diseño de Android 23.1.1.