我曾经这样做过:
menu.setHeaderTitle("Available Actions");
android.view.MenuItem Edit = menu.findItem(R.id.edit);
android.view.MenuItem Delete = menu.findItem(R.id.delete);
AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo;
int position = info.position;
ListView lv = (ListView) v;
int firstVisible = lv.getFirstVisiblePosition();
View rowView = lv.getChildAt(position - firstVisible);
if (Rateit.isUserLoggedIn == true) {
{
Edit.setVisible(true);
Delete.setVisible(true);
} else {
Edit.setVisible(false);
Delete.setVisible(false);
}
} else {
Edit.setVisible(false);
Delete.setVisible(false);
}
现在菜单是通过NOT膨胀布局设置的,但是这个:
menu.add(2, 1, 0, "Edit");
menu.add(2, 2, 0, "Delete");
但是,我找不到将itemId
(add
方法中的第二个参数)分配给Edit
/ Delete
所需的方法,以便我可以设置它们可见与否?有谁知道怎么做?
答案 0 :(得分:2)
menu.add
如果您将其保存到变量中,则会返回MenuItem
,然后您可以更改其菜单的可见性,例如
MenuItem edit = menu.add(2, 1, 0, "Edit");
MenuItem delete = menu.add(2, 2, 0, "Delete");
edit.setVisible(Rateit.isUserLoggedIn);
delete.setVisible(Rateit.isUserLoggedIn);
如果您以后不需要访问菜单项,也可以将调用链接在一起
menu.add(2, 1, 0, "Edit").setVisible(Rateit.isUserLoggedIn);
menu.add(2, 2, 0, "Delete").setVisible(Rateit.isUserLoggedIn);
答案 1 :(得分:2)
add()
返回一个MenuItem,只需保存此值即可随时显示/隐藏它。
MenuItem edit = menu.add(2, 1, 0, "Edit");
// Do with "edit" as you please
另请阅读Java naming conventions,其中指出变量(如edit
)应以小写字母开头。