微调器工作正常,用户可以选择值.但我也希望用户能够输入新值,如果他们想输入新值.我该怎么做?
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中输入新值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)