Android 导航抽屉列表视图片段

Android 导航抽屉列表视图片段,android,Android,我想制作一个导航抽屉,它将通过listview填充。现在,我希望通过单击列表中的每个项目,根据我的选择打开一个片段。我该怎么做 NavigationDrawer在菜单中不使用ListView,NavigationDrawer直接使用菜单项。这意味着在源代码中,您可以根据需要以编程方式将项添加到菜单中 您的NavigationDrawer活动或您命名的任何内容 您可以使用将项目添加到菜单中 @Override public boolean onCreateOptionsMenu(Menu menu

我想制作一个导航抽屉,它将通过listview填充。现在,我希望通过单击列表中的每个项目,根据我的选择打开一个片段。我该怎么做

NavigationDrawer在菜单中不使用ListView,NavigationDrawer直接使用菜单项。这意味着在源代码中,您可以根据需要以编程方式将项添加到菜单中

您的NavigationDrawer活动或您命名的任何内容

您可以使用将项目添加到菜单中

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // To Inflate the menu:
    // this adds items to the navigation drawer menu if it is present.
    getMenuInflater().inflate(R.menu.dashboard, menu);
    return true;
} 
默认情况下,此方法使用res/menu/menu_file.XML中的XML布局创建静态菜单

但是如果您遵循下一个源代码,您将能够以编程方式向导航抽屉添加更多项目

方法add()重载:

  • 添加(整数标题)
  • 添加(字符序列标题)
  • 添加(int-groupId、int-itemId、int-order、int-titles)
  • 添加(int-groupId、int-itemId、int-order、CharSequence-title)
如果新菜单项的所有名称都已包含在类似itemsName的数组中 您可以使用以下内容:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    for(String itemName : itemsName){
       int itemId = Arrays.asList(itemsName).indexOf(itemName);
       menu.add(Menu.NONE, itemId, Menu.NONE, itemName);
    }
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    //here you need the logic of what action
    //your item is going to take
    //but that is up to you 
    //how do you want to know what to do
    //with a dynamic unknown array of options.
    if (itemId == 0){
       doSomething();
       return true;
    }
    return false;
  }
}
要管理每个单击事件,您需要根据动态数组中要执行的操作数组来解决它,因为您需要知道菜单项作为菜单选项需要执行或表现的每个操作。 但通常情况下,您的单击侦听器会使用以下菜单项:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    for(String itemName : itemsName){
       int itemId = Arrays.asList(itemsName).indexOf(itemName);
       menu.add(Menu.NONE, itemId, Menu.NONE, itemName);
    }
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    //here you need the logic of what action
    //your item is going to take
    //but that is up to you 
    //how do you want to know what to do
    //with a dynamic unknown array of options.
    if (itemId == 0){
       doSomething();
       return true;
    }
    return false;
  }
}

享受

选项菜单与
NavigationView
使用的菜单资源完全无关。