在我的应用程序的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));
}