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...