Cómo agregar el artículo a Spinner's ArrayAdapter?
Tenía un EditText, un botón y un spinner. Cuando haga clic en el botón, el hilandero agregará un nuevo elemento con el nombre que ingresó en el EditText. Pero aquí está la pregunta, mi método de adaptador.add () parece que no funciona … aquí está mi código:
public class Spr extends Activity { Button bt1; EditText et; ArrayAdapter<CharSequence> adapter; Spinner spinner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); bt1 = (Button)this.findViewById(R.id.bt1); et = (EditText)this.findViewById(R.id.et); spinner = (Spinner)this.findViewById(R.id.spr); 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); bt1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String temp = et.getText().toString(); adapter.add(temp); adapter.notifyDataSetChanged(); spinner.setAdapter(adapter); } }); spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){ @Override public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { Toast.makeText(parent.getContext(), "The planet is " + parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show(); } @Override public void onNothingSelected(AdapterView<?> arg0) { }}); }
}
- Android: cómo agregar un método de clic de artículo a un ArrayAdapter
- Android spinner muestra referencia de objeto en lugar de cadena
- Getview parámetro "convertview" no nulo en el nuevo parámetro "posición"
- Comportamiento personalizado de AutoCompleteTextView
- Ampliación de ArrayAdapter en android
¡Gracias! Aún esperando
- Eliminar elemento en ArrayAdapter <String> en ListView
- Genéricos con ArrayAdapters
- Añadiendo a Fragmento ArrayAdapter de Activity AlertDialog
- Cómo borrar ArrayAdapter con ListView personalizado
- Android: Obtiene el elemento listview del botón que se hace clic en la vista de lista personalizada
- Android Spinner databind usando la lista de matrices
- Cómo mostrar un botón de imagen sólo en ciertas filas
- Nullpointerexception en getView de ArrayAdapter personalizado
Cuando ha creado su ArrayAdapter no le ha asignado una lista redimensionable, por lo que cuando agrega () no puede incrementar el tamaño de la misma y lanza una UnsupportedOperationException.
Intente algo como esto:
List<CharSequence> planets = new ArrayList<CharSequence>(); adapter = new ArrayAdapter<CharSequence>(context, R.array.planets_array, planets); //now you can call adapter.add()
Usted debe usar una lista. Con un Array como CharSequence [] obtendría la misma excepción UnsupportedOperationException.
Javi tiene razón excepto que no hace referencia a una matriz para el segundo parámetro.
adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_spinner_item, someList);
Creo que esto está funcionando como se diseñó, pero no como se esperaba. ArrayAdapter utilizado para tomar sólo una matriz, pero el constructor de la lista se agregó más tarde. Supongo que su justo hacer un toArray () en su lista. Esta es la razón por la que tiene que llamar a agregar en el adaptador, o crear un nuevo adaptador cuando cambia su lista.
Usted puede crear un arraylist y copiar todo el recurso a este objeto entonces crea el arrayadaptor y envía este arraylist y en onclicklistener del botón, agrega el contenido de edittext al objeto del arraylist entonces llama notifydatasetchanged de adator
- ¿Cómo ignorar las carpetas completas para verificación de pelusa con gradle?
- Android Advertencia: CHECK surface infomation creating = false