我有一个导航抽屉,有一些声音。
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);
答案 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);
希望这会有所帮助