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: –
- Set onClickListener para el elemento spinner?
- spinner dropdown inicio de la parte superior de la ruleta
- Android: Spinners dentro de un ListView pierden sus valores cuando agrego dinámicamente nuevas entradas ListView
- Establecimiento de hilanderos en fragmento
- La eliminación del último elemento de la ruleta suprime toda la lista
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)
- Cómo establecer la posición en el hilandero?
- Spinner en la barra de acción con sólo el icono pero no la opción seleccionada
- Alinear una ruleta subrayada en la misma línea junto al texto de edición
- Ocultar una hilera de carga al hacer clic fuera de ella en Android
- ¿Cómo obtener el valor de Spinner?
- Android: Selección de spinner alineada a la izquierda
- Actionbarsherlock IcsSpinner - el ancho siempre se ajusta a los elementos más amplios
- ¿Recuperando el elemento seleccionado de la hiladora?
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); } }