Android进阶之OptionsMenu+ContextMenu+subMenu

一、OptionsMenu+ContextMenu区别

1、OptionsMenu

onCreateOptionsMenu :此方法为创建菜单方法,这个菜单就是你在点击手机menu键或者右上角的三点标志时会看到的菜单。
onOptionsItemSelected :这个方法在onCreateOptionsMenu 创建的菜单被选中时才会被触发。

Android进阶之OptionsMenu+ContextMenu+subMenu_第1张图片 Android进阶之OptionsMenu+ContextMenu+subMenu_第2张图片

2、ContextMenu

①注册Activity.registerForContextMenu(View view)

②onCreateContextMenu :创建菜单方法,这菜单是在长按前面注册的view时弹出的菜单。

③onContextItemSelected :这个方法在onCreateContextMenu 创建的菜单被选中时才会被触发。

onMenuItemSelected :当你选择上面两种菜单任意一种时都会触发这个事件。

3、SubMenu

二、具体实现

1、OptionsMenu

/** * 单选,全选,全不选,删除选中Item,每个Item的单击事件保留 * (Item单击事件和选中checkbox是两个功能,不影响)。 */
public class CheckBoxActivity extends AppCompatActivity {

    private List list = new ArrayList();
    private CheckBoxAdapter checkBoxAdapter;
    private static final int ID_COLUMN_INDEX = 100;

    @InjectView(R.id.lv_show)
    ListView lvShow;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_check_box);
        ButterKnife.inject(this);

        InitAdapter();
    }

    private void InitAdapter() {
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        list.add("six");
        list.add("seven");
        list.add("eight");
        list.add("nine");
        list.add("ten");

        checkBoxAdapter = new CheckBoxAdapter(this, list);
        lvShow.setAdapter(checkBoxAdapter);

        lvShow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(CheckBoxActivity.this,"--" + list.get(position).toString(), Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_check_box, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        switch (id) {
            case R.id.action_all:
                for (int i = 0; i < checkBoxAdapter.getCount(); i++) {
                    checkBoxAdapter.sSelected.put(i, true);
                }
                checkBoxAdapter.notifyDataSetChanged();
                Toast.makeText(CheckBoxActivity.this,"全选", Toast.LENGTH_SHORT).show();
                break;

            case R.id.action_allnot:
                for (int i = 0; i < checkBoxAdapter.getCount(); i++) {
                    checkBoxAdapter.sSelected.put(i, false);
                }
                checkBoxAdapter.notifyDataSetChanged();
                Toast.makeText(CheckBoxActivity.this,"全不选", Toast.LENGTH_SHORT).show();
                break;

            case R.id.action_delete:
                for(int i = 0; i < CheckBoxAdapter.sDeleteSet.size(); i++) {
                    list.remove(i);
                }
                checkBoxAdapter.notifyDataSetChanged();
                Toast.makeText(CheckBoxActivity.this,"删除选中项", Toast.LENGTH_SHORT).show();
                break;

            default:
                break;
        }

        return super.onOptionsItemSelected(item);
    }
}

Android 菜单(OptionMenu)大全 建立你自己的菜单

2、ContextMenu

使用上下文菜单ContextMenu

Android中onContextItemSelected不响应是怎么回事?

onContextItemSelected 与 onMenuItemSelected 的那些事

3、SubMenu

Pro Android学习笔记(三一):Menu(2):扩展、图片、子菜单

你可能感兴趣的:(Android进阶之OptionsMenu+ContextMenu+subMenu)