android – 允许用户在Spinner中输入新值

android – 允许用户在Spinner中输入新值,第1张

概述首先,我是 android开发的新手.我正在构建一个小应用程序,其中包含一个微调器,其中包含四个数字的预定义set(数组),我使用ArrayAdapter将值从资源文件提供给微调器. 微调器工作正常,用户可以选择值.但我也希望用户能够输入新值,如果他们想输入新值.我该怎么做? onCreate活动方法中的代码: Spinner spinner =(Spinner)findViewById(R.id 首先,我是 android开发的新手.我正在构建一个小应用程序,其中包含一个微调器,其中包含四个数字的预定义set(数组),我使用ArrayAdapter将值从资源文件提供给微调器.

微调器工作正常,用户可以选择值.但我也希望用户能够输入新值,如果他们想输入新值.我该怎么做?

onCreate活动方法中的代码:

Spinner spinner =(Spinner)findVIEwByID(R.ID.spinner);
        //使用字符串数组和默认的微调器布局创建ArrayAdapter
        ArrayAdapter<&CharSequence的GT; adapter = ArrayAdapter.createFromresource(这个,
        R.array.points_preset,androID.R.layout.simple_spinner_item);
        //指定出现选项列表时要使用的布局
        adapter.setDropDownVIEwResource(androID.R.layout.simple_spinner_dropdown_item);
        //将适配器应用于微调器
        spinner.setAdapter(适配器);
        spinner.setonItemSelectedListener(new SpinnerActivity());

SpinnerActivity类的代码:

更新以包含输入对话框:

public class SpinnerActivity extends Activity implements OnItemSelectedListener {        public voID onItemSelected(AdapterVIEw<?> parent,final VIEw vIEw,int pos,long ID) {            if (pos==3)            {                // Set an EditText vIEw to get user input                 final EditText input = new EditText(MainActivity.this);                new AlertDialog.Builder(MainActivity.this)                                            .setMessage("Enter your Point here")                    .setVIEw(input)                    .setPositivebutton("Ok",new DialogInterface.OnClickListener() {                         public voID onClick(DialogInterface dialog,int whichbutton) {                          Editable   editable = input.getText();                           //if I uncomment following line,the application terminates                       // Spinner spinner = (Spinner) findVIEwByID(R.ID.spinner);                         }                    })                    .setNegativebutton("Cancel",int whichbutton) {                                // Do nothing.                         }                    }).show();             }                                    }        public voID onnothingSelected(AdapterVIEw<?> parent) {            // Another interface callback        }    }                    `

Strings.xml资源文件

<?xml version="1.0" enCoding="utf-8"?><resources>    <string name="app_name">PointCalculator</string>    <string name="menu_settings">Settings</string>    <string-array name="points_preset">    <item>3</item>    <item>10</item>    <item>0</item>    <item>Oth</item>    </string-array></resources>

SpinnerActivity类的更新和工作版本

`

public class SpinnerActivity extends Activity implements OnItemSelectedListener {                public voID onItemSelected(AdapterVIEw<?> parent,long ID) {                    if (pos==3)                    {                        // Set an EditText vIEw to get user input                         final EditText input = new EditText(MainActivity.this);                        new AlertDialog.Builder(MainActivity.this)                                                    .setMessage("Enter your Point here")                            .setVIEw(input)                            .setPositivebutton("Ok",new DialogInterface.OnClickListener() {                                 public voID onClick(DialogInterface dialog,int whichbutton) {                                  Editable   editable = input.getText();                            arrayList.add(editable.toString());                            adapter.notifyDataSetChanged();                                 }                            })                            .setNegativebutton("Cancel",int whichbutton) {                                        // Do nothing.                                 }                            }).show();                     }                                            }                public voID onnothingSelected(AdapterVIEw<?> parent) {                    // Another interface callback                }            }`

谢谢,

解决方法 您创建ArrayAdapter的方式将不允许您非常轻松地添加到阵列,因为将从资源创建支持阵列.

首先从资源加载数组并将其添加到List.然后使用该List创建ArrayAdapter.

然后,您可以通过添加到支持列表将项添加到微调器.您需要在适配器上调用notifyDatasetChanged(),让它知道您更改了适配器中的可用项.

总结

以上是内存溢出为你收集整理的android – 允许用户在Spinner中输入新值全部内容,希望文章能够帮你解决android – 允许用户在Spinner中输入新值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1128840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存