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<String> 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<String>(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);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,612评论 25 708
  • 古天看着爷爷略有些苍老的脸,才明白原来位高权重的爷爷,同时承担着这么重大的责任。自己看的还是太少了!自己也不可能时...
    万树心语阅读 318评论 0 0
  • 我们生活的每一天,都在穿越时空,我们所能做的,就是尽其所能,珍惜这趟不平凡的旅程。原谅不断犯错的自己,虽然我们都回...
    说吧_记忆阅读 393评论 0 0
  • 文|云冰柔图 |网络 林平之,《笑傲江湖》里一个令我又爱又恨的人。 看着他从风姿潇洒、玉树临风的俊朗公子变成心里扭...
    谢安迪阅读 735评论 0 0
  • ——不相信自己的意志,永远也做不成将军。 春秋战国时代,一位父亲和他的儿子出征打战。父亲已做了将军,儿子还只是马前...
    振衣阅读 339评论 0 0