Rellene dinámicamente el Spinner en android desde el texto de edición

Tengo un hilandero en el cual pocos valores están allí de strings.xml y quiero poblar ese hilandero dinámicamente de corregir el texto usando el acontecimiento del onclick del botón pero de alguna manera no está trabajando y estoy consiguiendo el cierre de la fuerza cada vez. Cualquier ayuda será apreciada.

package com.example.expense; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; public class Expense3 extends Activity { //private TextView t1; private Spinner spinner; private EditText Text; private ArrayAdapter<CharSequence> adapter; private Button addButton; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Text = (EditText)findViewById(R.id.widget4); addButton = (Button)findViewById(R.id.add_new); spinner = (Spinner) findViewById(R.id.hhj); adapter = ArrayAdapter.createFromResource( this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); this.addButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { addNewSpinnerItem(); } }); } protected void addNewSpinnerItem() { // TODO Auto-generated method stub CharSequence textHolder = "" + Text.getText().toString(); adapter.add(textHolder); } } 

Error de Logcat: –

 05-14 01:07:19.934: ERROR/AndroidRuntime(802): FATAL EXCEPTION: main 05-14 01:07:19.934: ERROR/AndroidRuntime(802): java.lang.UnsupportedOperationException 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at java.util.AbstractList.add(AbstractList.java:411) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at java.util.AbstractList.add(AbstractList.java:432) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at android.widget.ArrayAdapter.add(ArrayAdapter.java:178) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at com.example.expense.Expense3.addNewSpinnerItem(Expense3.java:50) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at com.example.expense.Expense3$1.onClick(Expense3.java:40) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at android.view.View.performClick(View.java:2408) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at android.view.View$PerformClick.run(View.java:8816) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at android.os.Handler.handleCallback(Handler.java:587) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at android.os.Handler.dispatchMessage(Handler.java:92) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at android.os.Looper.loop(Looper.java:123) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at android.app.ActivityThread.main(ActivityThread.java:4627) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at java.lang.reflect.Method.invokeNative(Native Method) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at java.lang.reflect.Method.invoke(Method.java:521) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 05-14 01:07:19.934: ERROR/AndroidRuntime(802): at dalvik.system.NativeStart.main(Native Method) 

Usted está intentando agregar el artículo en el adaptador que se crea de recursos así que le dará el resultado unsupported . Para resolver este problema, puede crear una Lista en blanco y, a continuación, agregar elementos en la Lista de sus recursos. Para eso puedes usar Arrays.asList() o puedes hacer un bucle y agregar elementos individuales en la lista y después de crear una lista tendrás que crear un adaptador usando esa lista.

Ahora, para agregar un elemento en el adaptador de la hiladora puede utilizar el método adapter.add() para agregar un elemento dentro del adaptador de hiladora. A continuación se muestra un ejemplo que explica cómo crear un adaptador y agregar un elemento en la hiladora.

 adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, array); 

Aquí matriz es una lista.

Y para agregar el artículo en el hilandero usted puede utilizar el método del agregado.

 adapter.add("String to insert into spinner"); 

El problema es que ArrayAdapter.createFromResource() utiliza Arrays.asList() que devuelve una lista inmutable, lo que significa que no puede agregar ningún elemento al adaptador (es decir, la operación "unsupported"). Intente crear un adaptador vacío y simplemente agregue los elementos a eso:

 adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, new ArrayList<CharSequence>()); 

Sí, lo que dijeron.

 package com.stackoverflow.q5999262; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; public class Main extends Activity { private Spinner spinner; private EditText Text; private ArrayAdapter<String> adapter; private Button addButton; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Text = (EditText) findViewById(R.id.widget4); List<String> planets = new ArrayList<String>(Arrays.asList(getResources().getStringArray(R.array.planets_array))); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, planets); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner = (Spinner) findViewById(R.id.hhj); spinner.setAdapter(adapter); addButton = (Button) findViewById(R.id.add_new); addButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { addNewSpinnerItem(); } }); } protected void addNewSpinnerItem() { String textHolder = "" + Text.getText().toString(); adapter.add(textHolder); } } 
  • Eliminación del margen de la lista desplegable de hilanderos
  • Android Spinner - onItemSelected / setOnItemSelectedListener no se activa
  • Cómo quitar el borde blanco por defecto de la lista desplegable del hilandero
  • El girador se desplaza hacia arriba cuando está encendidoPulse o desplaza lentamente
  • Implementación de eventos Spinner with Butter Knife
  • ¿Cómo pasar datos de spinner de una actividad a otra?
  • ¿Cómo puedo utilizar spinner setOnItemLongClickListener
  • No se puede escribir en el campo de entrada después de cargar una página con InAppBrowser y la carga del hilador
  • Fragmento de carga de hiladora / diálogo en Honeycomb
  • Lista emergente de hilandera personalizada en android
  • Spinner en el cambio de valor
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.