导航抽屉列表视图片段

时间:2018-02-02 15:40:23

标签: android

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

1 个答案:

答案 0 :(得分:1)

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()重载:

  • add(int titleRes)
  • add(CharSequence title)
  • add(int groupId,int itemId,int order,int titleRes);
  • add(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;
  }
}

享受!!!