Android:从WebService务实地添加NavigationView中的Menuitem



在我的应用程序的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"
  },
  ....]

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

在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));
        }
    }

但仍然没有用。

我想在NavigationView中使用图标显示此菜单。我们可以使用picaso库显示图标吗?请帮助。

用于动态添加导航menuitems,您应该在运行时间从导航视图中获取菜单对象。也从服务器中获取图标并保留图标。

    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));
    }

最新更新