TheLettuceMaster
TheLettuceMaster

Reputation: 15734

Hiding Menu items without inflating Menu layout

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

Answers (2)

Sam
Sam

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

Eluvatar
Eluvatar

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

Related Questions