【问题标题】:Android : add menuItem in NavigationView pragmatically from webserviceAndroid:从 web 服务实用地在 NavigationView 中添加 menuItem
【发布时间】:2016-12-16 05:01:04
【问题描述】:

在我的应用的 NavigationView 中有几个菜单,但我希望用户只访问特定的菜单。根据用户权限,用户将只能查看其可访问的菜单。所以我创建了返回菜单列表的网络服务。

这里是菜单访问的json输出

[
  {
    "id": "1",
    "appId": "1",
    "userId": "1",
    "name": "Design List",
    "icon": "http://some_website/Demo/images/menu/1.png",
    "code": "dsn001"
  },
  {
    "id": "2",
    "appId": "1",
    "userId": "1",
    "name": "Price List",
    "icon": "http://some_website/Demo/images/menu/2.png",
    "code": "prc002"
  },
  ....]

例如,用户只能访问此菜单。我在应用程序中准备好了一个导航视图。我想将此菜单添加到导航视图。

在android中我为菜单创建了一个模型类

MenuItems.java

public class MenuItems {

    public String id;
    public String appId;
    public String userId;
    public String name;
    public String icon;
    public String code;
}

在 web 服务响应中,我将响应转换为 ArrayList<MenuItems>() 这是网络服务代码。

ArrayList<MenuItems> menuItem = new ArrayList<MenuItems>();
.
.
MenuItems[] items = new Gson().fromJson(response, MenuItems[].class);
for (MenuItems m : items) {
    menuItem.add(m);
}

在主要活动中我做了这段代码。

Menu menu = navigationView.getMenu();
    if (menuList != null) {
        for (MenuItems items : menuList) {
            MenuItem menuItem = menu.add(items.name);
            menuItem.setIcon(new BitmapDrawable(items.icon));
        }
    }

但还是不行。

我想在导航视图中显示带有图标的菜单。 我们可以使用 Picaso 库显示图标吗?请帮忙。

【问题讨论】:

  • 你的意思是把菜单项添加到你APP的NavigationDrawer吗?
  • 你需要做this
  • @HasifSeyd 是的。我想在 o NavigationDrawer 中添加菜单。
  • @EricB。谢谢,我认为它可能有效。我正在努力。

标签: android menuitem android-navigationview


【解决方案1】:

要动态添加导航菜单项,您应该像这样在运行时从 NavigationView 获取菜单对象。还从服务器获取图标并保留它。

    Menu menu = navigationView.getMenu();

然后将菜单列表添加到它

    for (MenuItems item : items) {
        MenuItem lNavigationMenuItem = menu.add(groupId, itemId, order, title);
        //fetch the bitmap from the server asynchronously before and add it to the menu as follows 
        lNavigationMenuItem.setIcon(new BitmapDrawable(bitmap));
    }

【讨论】:

  • 但我的列表不是MenuItem 类型。它的MenuItems
  • 是的,有什么疑问??好的,使用您使用的任何类型,我刚刚提供了逻辑
  • for循环内的“MenuItem lNavigationitem”来自包android.view.MenuItem
  • 查看我编辑的问题我已经添加了你的逻辑,但我的菜单仍然是空的。
猜你喜欢
  • 2016-03-16
  • 2016-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多