ContextMenu的java实现

contextMenu的java实现
要实现的效果如手机的通讯录长按一个联系人,弹出一个上下文菜单项,点击上下文菜单项实现对应功能。因通讯录是一个ListView,所以在MainActivity.xml中放置一个ListView。在MainActivity.java中,首先找到这个ListView,然后为这个ListView配置Adapter。接着为ListView注册contextMenu,registerforContextMenu(ListView)。然后实现两个重要的函数OnCreateContextMenu和onContextItemSelected。第一个函数是用来实现上下文菜单,在这个函数中首先要获取Adapter,然后设置菜单栏标题和内容。在第二个函数中来响应上下文菜单中条目的点击。

public class MainActivity extends AppCompatActivity {

    private ArrayList list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //生成数据
        list = new ArrayList<>();
        for (int i = 0; i < 2; i++) {
            list.add("ssss" + i);
        }
        //找到控件
        ListView lv = findViewById(R.id.listview);
        //配置适配器
        lv.setAdapter(new ArrayAdapter(MainActivity.this, android.R.layout.simple_expandable_list_item_1, list));
        //注册上下文菜单
        registerForContextMenu(lv);

    }

    @Override//重写的生成上下文菜单
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        //获取适配器
        AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
        //设置标题
        menu.setHeaderTitle(list.get(info.position));
        //设置内容 参数1为分组,参数2对应条目的id,参数3是指排列顺序,默认排列即可
        menu.add(0, 1, 0, "删除");
        menu.add(0, 2, 0, "编辑");
        menu.add(0, 3, 0, "加入黑名单");

    }

    @Override//添加上下文菜单选项长按监听
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case 1 :
                Toast.makeText(MainActivity.this,"删除成功",Toast.LENGTH_LONG).show();
                break;
            case 2:
                break;
            case 3:
                break;
        }
        return super.onContextItemSelected(item);
    }
}

你可能感兴趣的:(ContextMenu的java实现)