新しいアイテムを追加できるようにNavigationDrawer
を作成します(新しい都市を追加するyahoo weatherアプリなど)。私はNavigationDrawer
でNavigationView
を使用していますが、メニューには永続的なフィールドがあります:
<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>
私は新しいItemこのメソッドを追加しようとしています:
public boolean addNewItem(String itemName){
Menu menu = navigationView.getMenu();
menu.add(R.id.group,Menu.NONE,Menu.NONE,itemName);
return true;
}
誰もこの問題を解決する方法を知っていますか?または、なぜこれが起こっているのですか?追加された要素に関する情報をどこでどのように保持できるかはわかりません。何か案は?
アイテムをプログラムで追加するには、NavigationView
のgetMenu()
メソッドを使用してMenuオブジェクトを取得し、そのMenu
オブジェクトを使用してナビゲーションドロワーにアイテムを追加します。
_final Menu menu = navigationView.getMenu();
for (int i = 1; i <= 3; i++) {
menu.add("Runtime item "+ i);
}
_
SubMenu
を使用して、サブセクションとアイテムを追加できます。
_// 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);
}
_
詳細については、 TechnoTalkativeを確認してください 。
編集:メニューを操作する場合は、menu.add(0, itemId, 0, title);
その後
_ public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
_
idは、割り当てられたitemIdを提供します
2つのグループ、group1とgroup2があるとします。 group1にアイテムを動的に追加する場合は、group2に優先順位を割り当てて、常にgroup1より下に設定できます。その後、新しいアイテムをgroup1に追加すると、group2の下には挿入されません。
サンプルを次に示します。
<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>
そして、group1にメニュー項目を追加すると:
Menu menu = navigationView.getMenu();
menu.add(R.id.group1,Menu.NONE,Menu.NONE,itemName);
これは動作するはずです。 Androidデザインライブラリ23.1.1でテストしました。
<group Android:checkableBehavior="single">
<item
Android:id="@+id/send_notification"
Android:icon="@drawable/ic_menu_send"
Android:title="@string/send_notification"
Android:visible="false"/>
</group>
ナビゲーションドロワーにアイテムを動的に追加する場合は、xmlで非表示にし、次のようにプログラムで表示します。
NavigationView navigationView = findViewById(R.id.nav_view);
Menu menu=navigationView.getMenu();
menu.findItem(R.id.send_notification).setVisible(true);
それでおしまい。