Android:获取菜单的项目位置

时间:2015-09-29 12:32:46

标签: android

我有一个导航抽屉,有一些声音。

navigationView = (NavigationView) findViewById(R.id.navigation_view);

其中一个声音的标识为"list_member",位置为#2(因此它的标识为1)。

我需要获得该位置,以便在代码的另一部分中使用。

这个伪代码的一些东西:

if (navigationView.getMenu().item has label == "list_member") {
id_position = this.getId();
}

navigationView.getMenu().getItem(id_position).setChecked(state);

3 个答案:

答案 0 :(得分:0)

您可以在视图中添加带setTag()的标记,然后迭代导航视图的容器并返回子位置。

答案 1 :(得分:0)

您可以使用setNavigationItemSelectedListener,如下所示:

navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

            // This method will trigger on item Click of navigation menu
            @Override
            public boolean onNavigationItemSelected(MenuItem menuItem) {


                //Checking if the item is in checked state or not, if not make it in checked state
                if(menuItem.isChecked()) menuItem.setChecked(false);
                else menuItem.setChecked(true);

                //Closing drawer on item click
                drawerLayout.closeDrawers();

                //Check to see which item was being clicked and perform appropriate action
                switch (menuItem.getItemId()){


                    case R.id.list_member:

                    // Do your code here...
                        return true;

                    default:

                        return trToast.makeText(getApplicationContext(),"Somethings Wrong",Toast.LENGTH_SHORT).show();ue;

                }
            }
        });

答案 2 :(得分:0)

每个View都有一个所谓的tag属性,我相信这样可以满足您存储此类信息的需要,这些信息将在您的上下文中充当“标签”。

详细信息:http://developer.android.com/reference/android/view/View.html#attr_android:tag

您可以在布局资源XML中设置此属性,也可以通过调用view.setTag(Object tag)setTag(int key, Object tag)以编程方式设置此属性,然后通过调用view.getTag()view.getTag(int key)来进行检索。

或者您也可以在父视图上调用view.findViewWithTag(Object tag)来查找包含特定标记的视图的子视图 (http://developer.android.com/reference/android/view/View.html#findViewWithTag(java.lang.Object)) 在你的情况下,它会像这样:

((Checkable) navigationView.getMenu().findViewWithTag("list_member")).setChecked(state);

希望这会有所帮助