Reputation: 15734
I used to do this:
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);
}
Now menu is set up by NOT inflating layout, but this:
menu.add(2, 1, 0, "Edit");
menu.add(2, 2, 0, "Delete");
However, I can't find the method I need to assign the itemId
(second parameter in add
method) to Edit
/ Delete
so I can set them visible or not? Anyone know how to do this?
Upvotes: 0
Views: 292
Reputation: 86948
add()
returns a MenuItem, simply save this value to show / hide it whenever you want.
MenuItem edit = menu.add(2, 1, 0, "Edit");
// Do with "edit" as you please
Also please read about Java naming conventions which states that variables, like edit
, should start with lower case letters.
Upvotes: 2
Reputation: 2285
menu.add
returns a MenuItem
if you save that into a variable you can then change the visibility of of them menu, for example
MenuItem edit = menu.add(2, 1, 0, "Edit");
MenuItem delete = menu.add(2, 2, 0, "Delete");
edit.setVisible(Rateit.isUserLoggedIn);
delete.setVisible(Rateit.isUserLoggedIn);
you could also just chain the calls together if you dont need to access the menu item later
menu.add(2, 1, 0, "Edit").setVisible(Rateit.isUserLoggedIn);
menu.add(2, 2, 0, "Delete").setVisible(Rateit.isUserLoggedIn);
Upvotes: 2