当前位置: 首页 > 工具软件 > contextMenu > 使用案例 >

ContextMenu

祁星阑
2023-12-01
	菜单列表的增加,删除,修改等两种方法
	第一种方法内容在menu文件夹中自定义XML
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >


    <item
        android:id="@+id/add"
        android:title="增加"/>
    <item
        android:id="@+id/delete"
        android:title="删除"/>
    <item
        android:id="@+id/update"
        android:title="修改"/>


</menu>
public class MainActivity extends Activity {

    private TextView textview;
    private LinearLayout lin;
    private EditText edittext;
    private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textview = (TextView) findViewById(R.id.textview);
        lin = (LinearLayout) findViewById(R.id.linlayout);
        edittext = (EditText) findViewById(R.id.edittext);
        button = (Button) findViewById(R.id.button);
        // 注册上下文菜单
        MainActivity.this.registerForContextMenu(textview);
    }

    // 生成上下文菜单
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        // 得到XML文件下的菜单界面
        getMenuInflater().inflate(R.menu.item_menu, menu);
    }

    // 上下文菜单项被选中
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.add:
                Toast.makeText(MainActivity.this, "您选择了增加", 0).show();
                break;
            case R.id.delete:
                Toast.makeText(MainActivity.this, "您选择了删除", 0).show();
                break;
            case R.id.update:
                Toast.makeText(MainActivity.this, "您选择了修改", 0).show();
                lin.setVisibility(View.VISIBLE);
                button.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        // 判断输入框是否为空
                        if (!TextUtils.isEmpty(edittext.getText().toString())) {
//                修改原始文本的内容
                            textview.setText(edittext.getText().toString());
//                把输入框设置为空
                            edittext.setText("");
//                隐藏LinearLayout界面
                            lin.setVisibility(View.GONE);
                        }
                    }
                });
            default:
                break;
        }
        return super.onContextItemSelected(item);
    }
	第二种方法在代码中添加内容
public class MainActivity extends Activity {

    private ListView listview;
    private ArrayList<String> list;
    private EditText name;
    private LinearLayout lin;
    private Button tijiao;
    private int m;
    private Base base;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listview = (ListView) findViewById(R.id.listview);
        lin = (LinearLayout) findViewById(R.id.lin);
        name = (EditText) findViewById(R.id.edittext);
        tijiao = (Button) findViewById(R.id.tijiao);
        list = new ArrayList<String>();
        for (int i = 0; i < 100; i++) {
            list.add("这是list" + i);
        }
        base = new Base(list, MainActivity.this);
        listview.setAdapter(base);
        // 注册上下文
        MainActivity.this.registerForContextMenu(listview);
    }

    // 生成上下文菜单
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
                                    ContextMenuInfo menuInfo) {
        
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, 0, ContextMenu.NONE, "增加");
        menu.add(0, 1, ContextMenu.NONE, "删除");
        menu.add(0, 2, ContextMenu.NONE, "修改");
    }

    // 设置上下文点击事件
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
        m = info.position;
        switch (item.getItemId()) {
            case 0://增加
                lin.setVisibility(View.VISIBLE);
                tijiao.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        if (!TextUtils.isEmpty(name.getText().toString())) {
                            list.add(m, name.getText().toString());
                            base.notifyDataSetChanged();
                            name.setText("");
                            lin.setVisibility(View.GONE);
                        }

                    }
                });
                break;
            case 1://删除
                list.remove(m);
                base.notifyDataSetChanged();
                break;
            case 2://修改
                lin.setVisibility(View.VISIBLE);
                tijiao.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        if (!TextUtils.isEmpty(name.getText().toString())) {
                            list.remove(m);
                            list.add(m, name.getText().toString());
                            base.notifyDataSetChanged();
                            name.setText("");
                            lin.setVisibility(View.GONE);
                        }
                    }
                });
                break;
            default:
                break;
        }

        return super.onContextItemSelected(item);
    }

 类似资料:

相关阅读

相关文章