2016-12-16 11 views
1

В NavigationView моего приложения есть несколько меню, но я хотел, чтобы пользователь получал доступ только к определенным меню. Согласно пользовательской привилегии пользователь сможет просматривать только доступные ему меню. Поэтому я создал веб-сервис, который возвращает мне список меню.Android: добавить menuItem в NavigationView прагматично из webservice

Вот 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" 
    }, 
    ....] 

Для примера пользователь имеет доступ только к этому меню. У меня есть навигационное представление, готовое в приложении. Я хотел добавить это меню в режим навигации.

В андроида я создал класс модели для меню

MenuItems.java

public class MenuItems { 

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

В ответ WebService, я преобразовал ответ на 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? пожалуйста помоги.

+0

вы имели в виду добавление пунктов меню NavigationDrawer вашего APP? –

+0

Вам нужно сделать [это] (http://stackoverflow.com/questions/30978114/add-a-listview-or-recyclerview-to-new-navigationview). –

+0

@HasifSeyd да. Я хочу добавить меню в o NavigationDrawer. –

ответ

0

Для добавления навигационного менюИнтемы Динамически вы должны получить объект Menu из 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)); 
    } 
+0

, но мой список не является типом 'MenuItem'. его 'MenuItems' –

+0

да, так что сомнения? хорошо, используя любой тип, который вы используете, я только что предоставил логику –

+0

внутри цикла «MenuItem lNavigationitem» из пакета android.view.MenuItem –