我的用户可以删除Navigation Drawer
中的项目,他们会选择要删除的项目,并且应从菜单中删除。
到目前为止,我试图这样做:
// Should remove item at position 'which'
private void removeTab(int which) {
NavigationView navView = (NavigationView) findViewById(R.id.nav_view);
Menu menu = navView.getMenu();
menu.removeItem(which + 1);
}
但它不会删除该项目。
我不确定removeItem
应该如何运作,是否有办法使用菜单中的位置删除Navigation Drawer
中的项目?
编辑:
我理解隐藏该项目,但这是有问题的,因为我必须跟踪隐藏的项目数量以隐藏下一项目。 (如果隐藏了Item1和Item2,那么Item3仍然在位置3而不是显示时为1。
答案 0 :(得分:2)
NavigationView navigationView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hideItem();
}
private void hideItem()
{
navigationView = (NavigationView) findViewById(R.id.nav_view);
Menu nav_Menu = navigationView.getMenu();
nav_Menu.findItem(R.id.nav_settings).setVisible(false);
}
答案 1 :(得分:0)
您可以将数据保存在arraylist中。在项目上滑动时,您可以从数组列表arraylist.remove(index)
中删除该项目,然后拨打adapter.notifyDataSetChanged()
。
重要:强>
如果实现此解决方案,则必须将arraylist传递给适配器并处理相同的列表对象。
答案 2 :(得分:0)
您需要在MenuItem
内提供removeItem
的ID。没有位置。
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
navigationView.getMenu().removeItem(item.getItemId());
}
});