-1

我想显示一个显示来自 SQLite DB 的数据的 Android Spinner。

但是,用户应该能够向此 Spinner 添加新项目。

在 iPhone / iOS 上,我使用 ActionSheetPicker 来实现这个目标。它看起来像这样:带有添加按钮的 iPhone ActionSheetPicker

如何用Android做到这一点?

4

1 回答 1

0

不确定它是否适用于 CursorAdapter 但以下代码与iOS 上
的 UIPicker 大致相同:

该代码执行以下操作:

  1. 创建/获取 Spinner 的数据
  2. 在活动上使用按钮而不是微调器
  3. 创建一个显示 Spinner 和添加按钮的 AlertDialog(弹出窗口)
  4. 添加按钮创建另一个带有 EditText(文本字段)的弹出窗口

    ArrayList<String> items = new ArrayList<String>();
    items.add("One");
    items.add("Two");
    items.add("Three");
    final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_dropdown_item, items);
    
    final Button selectBtn = (Button) findViewById(R.id.buttonCountry);
    selectBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(@SuppressWarnings("unused") View v) {
            new AlertDialog.Builder(main)
            .setTitle("Please choose a country")
            .setPositiveButton("Add Country", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    final EditText view = new EditText(main);
                    new AlertDialog.Builder(main)
                        .setTitle("Please enter a name")
                        .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                adapter.add(view.getText().toString());
                                selectBtn.setText(view.getText().toString());
                            }
                        })
                        .setNegativeButton("cancel", null)
                        .setView(view)
                        .show();
                }
            })
            .setAdapter(adapter, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    selectBtn.setText(adapter.getItem(which));
                    dialog.dismiss();
                }
            }).create().show();
        }
    });
    

以下是结果图片:

活动:
活动

带有微调器和按钮的 AlertDialog:
带有微调器和按钮的 AlertDialog

带有文本输入的 AlertDialog:
带有文本输入的 AlertDialog

于 2013-09-02T17:38:42.430 回答