0

私はこれを行っていました:

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);
            }

これで、メニューはレイアウトを膨らませることなく設定されますが、これは次のとおりです。

menu.add(2, 1, 0, "Edit");
menu.add(2, 2, 0, "Delete");

itemIdただし、 (メソッドの2番目のパラメーターadd)をEdit/に割り当てる必要があるメソッドが見つからないため、Deleteそれらを表示するかどうかを設定できますか?誰もがこれを行う方法を知っていますか?

4

2 に答える 2

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);
于 2013-02-26T18:21:04.070 に答える
2

add()MenuItemを返します。この値を保存するだけで、いつでも表示/非表示にできます。

MenuItem edit = menu.add(2, 1, 0, "Edit");
// Do with "edit" as you please

また、のような変数は小文字で始める必要があると述べているJavaの命名規則についても読んでください。edit

于 2013-02-26T18:21:10.803 に答える