删除导航抽屉中给定位置的项目

时间:2017-01-17 12:23:04

标签: android navigation-drawer

我的用户可以删除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。

3 个答案:

答案 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());
            }
        });