У меня есть навигационное представление с 2 группами, в одну из которых я программно добавляю новый элемент, используя этот пример: Как добавить элемент в группу меню в NavigationView
Как создать и получить идентификатор для вновь добавленного элемента и установить на него OnClickListener? (потому что я хочу отправить некоторые в базу данных и получить).
Я хочу создать это поведение: поведение, которое я хочу создать
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group
android:id="@+id/group1"
android:checkableBehavior="single">
<item
android:id="@+id/nav_today"
android:icon="@drawable/ic_today"
android:orderInCategory="0"
android:title="@string/today" />
<item
android:id="@+id/nav_inbox"
android:icon="@drawable/ic_inbox"
android:orderInCategory="0"
android:title="@string/inbox_text" />
</group>
<group
android:id="@+id/group2"
android:checkableBehavior="none">
<item
android:id="@+id/nav_add_list"
android:icon="@drawable/ic_add"
android:orderInCategory="1"
android:title="@string/add_list_text" />
<item
android:id="@+id/nav_random_task"
android:icon="@drawable/ic_random_task"
android:orderInCategory="1"
android:title="@string/random_task" />
<item
android:id="@+id/nav_account"
android:icon="@drawable/ic_account"
android:orderInCategory="1"
android:title="@string/account" />
</group>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.BlueTheme);
setContentView(R.layout.activity_home_drawer);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TaskBottomSheet taskBottomSheet = new TaskBottomSheet();
taskBottomSheet.showNow(getSupportFragmentManager(), "taskBottomSheet");
}
});
drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
navigationView = findViewById(R.id.nav_view);
if (!TextUtils.isEmpty(listName)) {
addList(listName);
}
private void addList(String listName) {
Menu menu = navigationView.getMenu();
menu.add(R.id.group1, Menu.NONE, 0, listName).setIcon(R.drawable.ic_list);
}
Я пытался так:
navigationView = findViewById(R.id.nav_view);
Menu menu = navigationView.getMenu();
final MenuItem menuItem = menu.add(R.id.group1, Menu.NONE, 0,"Read").setIcon(R.drawable.ic_list);
menuItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
Toast.makeText(HomeDrawerActivity.this, "Item clicked", Toast.LENGTH_SHORT).show();
menuItem.setCheckable(true);
if (drawer.isDrawerOpen(GravityCompat.START)){
drawer.closeDrawer(GravityCompat.START);
}
return true;
}
});
Другая проблема - это метод addList. Новое добавленное меню не отображается. Только когда я добавляю меню непосредственно после navigationView = findViewById, элемент отображается. Как добавить несколько элементов и установить для них setOnClickListeners?