上下文菜单

MainActivity

public class MainActivity extends AppCompatActivity {
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv=(TextView)findViewById(R.id.tv);
        registerForContextMenu(tv);//2、给指定控件注册上下文菜单
    }

    /*1、创建上下文菜单*/
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        //加载菜单文件
        getMenuInflater().inflate(R.menu.menu1,menu);
        //添加菜单项,参数1.分组id,2.菜单项id,3.排序,数字越大越在上面,4.菜单的标题
        menu.add(1,1,6,"菜单1");
        menu.add(1,2,5,"菜单2");
        menu.add(1,3,4,"菜单3");
        //对组设置样式(是否选中以及单选或多选),参数1,组的id,2.是否被选中的样式,3.true为单选,false为多选
        menu.setGroupCheckable(1,true,false);
        //添加含有子菜单的项
        SubMenu sub = menu.addSubMenu(2, 4, Menu.NONE, "子菜单4");
        //添加子菜单
        sub.add(3,5,Menu.NONE,"我是菜单1");
        sub.add(3,6,Menu.NONE,"我是菜单2");
    }
    /*上下文菜单被选中事件*/
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.item1://字体变大
                tv.setTextSize(24);
                break;
            case R.id.item2://字体颜色
                tv.setTextColor(Color.RED);
                break;
            case 1://选中菜单1

                break;
            case R.id.item3://跳转
                Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
                break;
        }
        return super.onContextItemSelected(item);
    }
}
Main2Activity

public class Main2Activity extends AppCompatActivity {
    private ListView lv;
    List<Map<String,String>> list=new ArrayList<>();
    SimpleAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        lv=(ListView)findViewById(R.id.lv);
        for (int i=0;i<20;i++){
            Map<String,String> map=new HashMap<>();
            map.put("id",String.valueOf(i));
            map.put("name","我是"+i);
            list.add(map);
        }
        //实例化SimpleAdapter,作用是加载2列以上的数据
        //参数1.上下文对象,2.数据源,3.行要加载的布局文件,4.从哪个键上取值,5.放到哪个控件上,
        adapter=new SimpleAdapter(this,list,R.layout.list_item,
                new String[]{"id","name"},new int[]{R.id.tv_id,R.id.tv_name});
        lv.setAdapter(adapter);
        registerForContextMenu(lv);//注册上下文菜单

    }

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(1,1, Menu.NONE,"增加");
        menu.add(1,2, Menu.NONE,"删除");
        menu.add(1,3, Menu.NONE,"修改");
        menu.add(1,4, Menu.NONE,"查看详情");
    }

    /*做删除,1.获取索引,2.从List数据源中删掉索引对应的项,3.刷新ListView*/
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        //获取菜单项的菜单信息,并强制转换为AdapterContextMenuInfo,
        AdapterView.AdapterContextMenuInfo info=(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
        int position = info.position;//取出litView对应的索引
        switch (item.getItemId()){
            case 1://增加

                break;
            case 2://删除
                //从数据源中删除索引对应的项
                list.remove(position);
                //刷新数据
                adapter.notifyDataSetChanged();
                break;
            case 3://修改

                break;
            case 4://查看详情

                break;
        }
        return super.onContextItemSelected(item);
    }
}

activity_main

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="org.frxm.day02_menu.MainActivity">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="上下文菜单" />
</RelativeLayout>
activity_main2

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="org.frxm.day02_menu.Main2Activity">
    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>
</RelativeLayout>
list_item

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/tv_id"
        android:layout_width="0dp"
        android:layout_height="30dp"
        android:layout_weight="1"/>
    <TextView
        android:id="@+id/tv_name"
        android:layout_width="0dp"
        android:layout_height="30dp"
        android:layout_weight="1"/>
</LinearLayout>





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值