在动态加载的菜单和android

时间:2016-03-07 05:18:38

标签: android menuitem

我正在尝试在android中的服务器上动态加载的菜单项和子菜单项上实现点击/项目选择。但是,我应该如何找出或定义从服务器加载的项目ID?

我正在以这种方式从服务器添加新菜单和子菜单......

private class HttpAsyncTaskCheckAsset extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {

            return GET(urls[0]);
        }
        @Override
        protected void onPostExecute(String result) {

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            Menu m = navigationView.getMenu();
            SubMenu topChannelMenu = m.addSubMenu("Assets");

            try {
                JSONArray jArray = new JSONArray(result);

                for (int i = 0; i < jArray.length(); i++) {
                    JSONObject jsonobject = jArray.getJSONObject(i);
                    JSONArray jsonAssets = jsonobject.getJSONArray("assets");
                    for(int j = 0; j < jsonAssets.length(); j++){
                        JSONObject jsonInnerObject = jsonAssets.getJSONObject(j);
                        String deviceName = jsonInnerObject.getString("name");
                        topChannelMenu.setIcon(R.drawable.ic_menu_share);
                        topChannelMenu.add(deviceName);
                        Log.d("ASEETS_NAME",deviceName);
                        JSONObject idObject = jsonInnerObject.getJSONObject("_id");
                        String oid = idObject.getString("$oid");
                        Log.d("ASEETS_NAME",oid);

                    }

                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

            MenuItem mi = m.getItem(m.size()-1);
            mi.setTitle(mi.getTitle());
        }
    }

还有其他新方法可以做同样的事情吗? 在这里,我找不到项目ID,这对于实现项目选择选项至关重要。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

对于item_id,您可能希望使用: public abstract MenuItem add(int groupId,int itemId,int order,int titleRes)。 PLS。有关详细信息,请参阅菜单文档:

http://developer.android.com/reference/android/view/Menu.html#add(int,int,int,java.lang.CharSequence)