2016-12-16 2 views
1

In NavigationView meiner App hat mehrere Menüs, aber ich wollte Benutzer nur bestimmte Menüs zugreifen. Je nach Benutzerberechtigung kann der Benutzer nur seine zugänglichen Menüs anzeigen. Also habe ich einen Webservice erstellt, der mir eine Liste von Menüs zurückgibt. HierAndroid: hinzufügen MenuItem in NavigationView pragmatisch von Webservice

ist json Ausgabe von Menüzugriff

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

Zum Beispiel Benutzer nur Zugriff auf diese Menüs. Ich habe eine Navigationsansicht in der Anwendung bereit. Ich wollte diese Menüs zur Navigationsansicht hinzufügen.

In android ich eine Modellklasse für das Menü erstellt

MenuItems.java

public class MenuItems { 

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

In WebService Antwort, ich umgewandelt Antwort auf ArrayList<MenuItems>() hier Webservice-Code ist.

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

In der Haupttätigkeit habe ich diesen Code.

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

Aber immer noch hat es nicht funktioniert.

Ich wollte diese Menüs mit Symbol in der Navigationsansicht anzeigen. Können wir ein Symbol mit der Picaso-Bibliothek anzeigen? bitte hilfe.

+0

Meinten Sie Hinzufügen von Menüpunkten NavigationDrawer Ihrer APP? –

+0

Sie müssen [dies] (http://stackoverflow.com/questions/30978114/add-a-listview-or-recyclerview-to-new-navigationview) tun. –

+0

@HasifSeyd ja. Ich möchte ein Menü in o NavigationDrawer hinzufügen. –

Antwort

0

Zum Hinzufügen von Navigation menuItems Dynamisch sollten Sie das Menu-Objekt aus der NavigationView zur Laufzeit wie folgt erhalten. Holen Sie auch die Symbole vom Server und behalten Sie sie.

Menu menu = navigationView.getMenu(); 

fügen Sie dann die Liste der Menü es

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

aber meine Liste ist nicht 'MenuItem' Typ. seine 'MenuItems' –

+0

ja, also was ist der Zweifel ?? okay, benutze welchen Typ du auch immer benutzt, ich habe gerade die Logik –

+0

innerhalb der for-Schleife "MenuItem lNavigationitem" aus Paket android.view.MenuItem –

Verwandte Themen