No se puede modificar ArrayAdapter en ListView: UnsupportedOperationException

Estoy tratando de hacer una lista con nombres. Esta lista debe ser modificable (añadir, eliminar, ordenar, etc). Sin embargo, cuando intenté cambiar los elementos en el ArrayAdapter, el programa se estrelló, con java.lang.UnsupportedOperationException error. Aquí está mi código:

 ListView panel = (ListView) findViewById(R.id.panel); String[] array = {"a","b","c","d","e","f","g"}; final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, array); adapter.setNotifyOnChange(true); panel.setAdapter(adapter); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { adapter.insert("h", 7); } }); 

He intentado insertar, quitar y métodos claros, y ninguno de ellos funcionó. ¿Alguien me diría lo que hice mal?

Lo probé, me … Encontré que no funcionó. Así que compruebo el código fuente de ArrayAdapter y descubrí el problema. El ArrayAdapter, al ser inicializado por un array, convierte el array en un AbstractList (List) que no se puede modificar.

Solución Utilice un ArrayList<String> lugar de utilizar una matriz mientras inicializa el ArrayAdapter.

 String[] array = {"a","b","c","d","e","f","g"}; ArrayList<String> lst = new ArrayList<String>(Arrays.asList(array)); final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lst); 

¡Aclamaciones!

  • Explicación del método getView () de un ArrayAdapter
  • El método getView () de ArrayAdapter no se recibe
  • Cómo agregar el artículo a Spinner's ArrayAdapter?
  • Spinner con ArrayAdapter personalizado para objetos que no muestran el elemento seleccionado
  • Android listview item altura
  • GridView mediante Custom ArrayAdapter
  • ¿Cómo implementaron las noticias Android BBC y las aplicaciones Pulse news la vista de desplazamiento horizontal?
  • Adición dinámica de fila personalizada a listview
  • ¿Qué adaptador usar - BaseAdapter o ArrayAdapter?
  • Elemento de fila personalizada de Android para ListView
  • Cómo usar un ArrayAdapter en android de objetos personalizados
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.