2016-12-16 42 views
1

在我的應用的NavigationView中有幾個菜單,但我只想讓用戶訪問特定的菜單。根據用戶權限,用戶只能查看他的可訪問菜單。所以我創建了返回菜單列表的webservice。Android:在NavigationView中實實在在地從webservice中添加menuItem

這裏是菜單訪問

[ 
    { 
    "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" 
    }, 
    ....] 

例如用戶JSON輸出僅具有該菜單的訪問。我在應用程序中準備好了導航視圖。我想將這個菜單添加到navigationview。

在機器人我創建的模型類菜單

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>() 這裏是web服務的代碼。

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庫顯示圖標嗎?請幫忙。

+0

您的意思是添加菜單項到您APP的NavigationDrawer? –

+0

你需要做[這個](http://stackoverflow.com/questions/30978114/add-a-listview-or-recyclerview-to-new-navigationview)。 –

+0

@HasifSeyd是的。我想在NavigationDrawer中添加菜單。 –

回答

0

用於添加導航menuItems動態地,您應該像這樣在運行時從NavigationView中獲取Menu對象。也從服務器獲取圖標並保留它。

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

但我的列表不是'MenuItem'類型。它的'MenuItems' –

+0

是的,所以有什麼疑問?好吧,使用任何你使用的類型,我剛剛提供了邏輯 –

+0

for循環內「MenuItem lNavigationitem」是從包android.view.MenuItem –

相關問題