Why can't one add/remove items from an ArrayAdapter? Why can't one add/remove items from an ArrayAdapter? android android

Why can't one add/remove items from an ArrayAdapter?


You probably initialized the adapter with a plain Java array (e.g., String[]). Try using something that implements the java.util.List interface (e.g., ArrayList<String>).


I know it's late but just a quick explanation: it's because method Arrays.asList(T... array) returns custom inner class named ArrayList that is read-only. As already said, you need to provide full impl. e.g. java.util.ArrayList.


Here's the source code of ArrayAdapter#remove:

public void remove(T object) {    if (mOriginalValues != null) {        synchronized (mLock) {            mOriginalValues.remove(object);        }    } else {        mObjects.remove(object);    }    if (mNotifyOnChange) notifyDataSetChanged();}

The only thing that can throw an UnsupportedOperationException there is the line in the else-block. So the problem is that the list you're using doesn't support removing items. My guess is you're using an array. Try an ArrayList, for instance.

edit: So yeah, what Mark said...