J'ai donc une application où j'ai plusieurs dérouleurs dont plusieurs dont je voudrais changer les options en fonction de l'option sélectionnée par un autre spinner. Mon plan pour ce faire était de mettre:Exception d'opération non supportée avec ArrayAdapter.clear()
product_adapter.clear();
CharSequence[] array=makeArray(urlMaker.getProductid());
for(int i=0;i<array.length;i++){
product_adapter.add(array[i]);
}
product_adapter.notifyDataSetChanged();
dans un cas de la méthode onItemSelected() pour la fileuse qui est de dicter le changement de contenu de l'autre spinner. En théorie, l'idée est d'effacer le second spinner (product_adapter) puis d'ajouter un nouveau tableau créé par makeArray() (qui retourne un tableau de CharSequences comme spécifié dans le doc) à l'adaptateur du spinner en utilisant product_adapter.add (array [ i]) puis appelez .notifyDataSetChanged() pour le formaliser. Cependant, quand il frappe la première ligne les accidents d'application et donne la trace de la pile suivante:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.benhouse.weatherview, PID: 25791
java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:638)
at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java:75)
at java.util.AbstractList.removeRange(AbstractList.java:658)
at java.util.AbstractList.clear(AbstractList.java:466)
at android.widget.ArrayAdapter.clear(ArrayAdapter.java:273)
at com.example.benhouse.weatherview.MainActivity$3.onItemSelected(MainActivity.java:102)
at android.widget.AdapterView.fireOnSelected(AdapterView.java:924)
at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:913)
at android.widget.AdapterView.-wrap1(AdapterView.java)
at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:883)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Pourquoi ai-je cette erreur et comment puis-je résoudre ce problème?
Edit: voilà comment je suis peuplant intially la fileuse que je suis en train de changer:
ArrayAdapter<CharSequence> T_spinnerAdapter = new ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item, makeArray("GFS"));
Time_spin.setAdapter(T_spinnerAdapter);
Edit 2: Je suis un peu idiot. J'essayais de modifier le spinner du produit plutôt que le spinner temporel (le spinner prévu) et le spinner du produit est initialisé à partir d'un tableau dans le fichier values.xml. Aussi n'aime probablement pas se modifier en lui-même. Merci pour l'aide indirecte car elle m'a amené à réfléchir et à annuler mon code.
Veuillez éditer votre question et montrer comment vous remplissez 'ArrayAdapter'. – CommonsWare