如何在android中实现spinner数组适配器中的add item

如何在android中实现spinner数组适配器中的add item,android,spinner,Android,Spinner,我有一个编辑文本,一个按钮和一个微调器。单击该按钮时,微调器将使用您在编辑文本中输入的名称添加新项目。但问题是,我的adapter.add()方法似乎不起作用……以下是我的代码: bt1 = (Button)this.findViewById(R.id.AddBtn); et = (EditText)this.findViewById(R.id.newSpinnerItemText); spinner = (Spinner)this.fin

我有一个编辑文本,一个按钮和一个微调器。单击该按钮时,微调器将使用您在编辑文本中输入的名称添加新项目。但问题是,我的adapter.add()方法似乎不起作用……以下是我的代码:

  bt1 = (Button)this.findViewById(R.id.AddBtn);
            et = (EditText)this.findViewById(R.id.newSpinnerItemText);  
            spinner = (Spinner)this.findViewById(R.id.dynamicSpinner);

            adapter = ArrayAdapter.createFromResource(
                    this, R.array.simple_from_length, android.R.layout.simple_spinner_item);

            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            spinner.setAdapter(adapter);

            bt1.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    String temp = et.getText().toString();

                    adapter.add(temp);
                //    adapter.notifyDataSetChanged();
                    spinner.setAdapter(adapter);

                }
            });
此文件的错误:

02-27 18:01:17.728: ERROR/AndroidRuntime(1982): java.lang.UnsupportedOperationException
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at java.util.AbstractList.add(AbstractList.java:410)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at java.util.AbstractList.add(AbstractList.java:432)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.widget.ArrayAdapter.add(ArrayAdapter.java:178)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at org.example.SpinnerKiran.SpinnerKiran$1.onClick(SpinnerKiran.java:56)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.view.View.performClick(View.java:2179)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.view.View.onTouchEvent(View.java:3828)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.widget.TextView.onTouchEvent(TextView.java:6291)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.view.View.dispatchTouchEvent(View.java:3368)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1707)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1197)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.app.Activity.dispatchTouchEvent(Activity.java:1993)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1691)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1525)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.os.Looper.loop(Looper.java:123)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at android.app.ActivityThread.main(ActivityThread.java:3948)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at java.lang.reflect.Method.invokeNative(Native Method)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at java.lang.reflect.Method.invoke(Method.java:521)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
02-27 18:01:17.728: ERROR/AndroidRuntime(1982):     at dalvik.system.NativeStart.main(Native Method)

您需要创建一个自定义适配器,它可能基于
List
,并自己实现
add
方法。在
add
方法中,您需要添加到适配器的项目(字符串)内部列表中
createFromResource
的结果基于
CharSequence[]
,该结果以固定大小返回,并且不会动态增加。

ArrayAdapter已经基于List,因此您不需要仅为了使用List而定制适配器。但是,它使用创建时使用的列表或数组。它不会将元素复制到新列表中。如果给它一个固定长度的数组,则不能添加或删除成员

创建要传递给构造函数的列表。请注意,从Arrays.asList()创建的列表将不起作用,因为这只是原始数组的表示形式

        spinner = (Spinner)this.findViewById(R.id.dynamicSpinner);
        CharSequence[] itemArray = 
                getResources().getTextArray(R.array.simple_from_length);
        List<CharSequence> itemList = 
                new ArrayList<CharSequence>(Arrays.asList(itemArray));

        adapter = new ArrayAdapter(this, 
                android.R.layout.simple_spinner_item,
                itemList);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinner.setAdapter(adapter);
spinner=(spinner)this.findviewbyd(R.id.dynamicspiner);
CharSequence[]itemArray=
getResources().getTextArray(R.array.simple\u from\u length);
列表项列表=
新的ArrayList(Arrays.asList(itemArray));
适配器=新阵列适配器(此,
android.R.layout.simple\u微调器\u项,
项目清单);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);

您还可以使用列表和getResources.getStringArray()或任何方便的方法。

您可以使用如下添加方法

m_adapterForSpinner = new ArrayAdapter(this, android.R.layout.simple_spinner_item);  
m_adapterForSpinner.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);        
m_myDynamicSpinner.setAdapter(m_adapterForSpinner);
m_adapterForSpinner.add("dummy item");        

////////////////////////////////////////////////////////////////
addButton.setOnTouchListener(new OnTouchListener(){
    public boolean onTouch(View v, MotionEvent event) {

        final Dialog dialog=new Dialog(roughact.this);
        dialog.setContentView(R.layout.dialog);
        dialog.setTitle("Enter The Item");
        dialog.setCanceledOnTouchOutside(true);

        final EditText filename=(EditText)dialog.findViewById(R.id.filename);
        filename.setText("");

        Button d_ok=(Button)dialog.findViewById(R.id.d_ok);
        Button d_cancel=(Button)dialog.findViewById(R.id.d_cancel);
        d_ok.setOnTouchListener(new OnTouchListener(){
            public boolean onTouch(View v,MotionEvent me){

                CharSequence textHolder = "" + filename.getText();
                m_adapterForSpinner.add(textHolder);

                dialog.dismiss();
                return false;
            }
        });
        d_cancel.setOnTouchListener(new OnTouchListener(){
            public boolean onTouch(View v,MotionEvent me){
                dialog.dismiss();
                return false;
            }
        });
        dialog.show();

        return false;
    }

试试这个..它将帮助你。

List itemList=new ArrayList(itemArray);此语句未执行itemArray在中不受支持list@narasimha:对不起。ArrayList需要一个列表参数,而不是数组。编辑以更正。类似