我们说我从服务器获得一个数字列表,代表聊天室。
在该事件中,我通过调用循环在NavigationView
菜单中显示它们:
private NavigationView mNavigationView;
private SubMenu mMenuRooms;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
mMenuRooms = mNavigationView.getMenu().findItem(R.id.item_rooms).getSubMenu();
}
@Override
public void onTextMessage(WebSocket websocket, String str) throws Exception {
...
for (Room room: rooms) {
mMenuRooms.add("Chat room #" + room.id).setCheckable(true);
}
然后我从服务器收到一个带有一个号码的请求,告诉我"加入一个特定的聊天室"我想在该对象上找到相应的MenuItem
并调用setChecked(true)
:
目前我必须执行字符串杂技才能找到该菜单项:
String title = "Chat room #" + id;
for (int i = mMenuRooms.size() - 1; i >= 0; i--) {
MenuItem item = mMenuRooms.getItem(i);
item.setChecked(title.equals(item.getTitle()); // a hack using menu item title
}
但是我更愿意在创建时将房间号传递给菜单项 - 然后在迭代菜单时检索Integer
。
请问怎么做?
在MenuItem doc中,有一个方法getMenuInfo()
用于检索自定义对象。但我找不到用于设置该对象的兄弟方法......
答案 0 :(得分:0)
如果要更新MenuItam方法调用inValidateOptionMenu();
方法,则应调用方法onCreateOptionsmenu()
,以便通过使用全局变量检查更新后的值,并相应地更改UI。