wie Sie Element hinzufügen zu Spinner ' s ArrayAdapter?
hatte ich ein EditText , eine Schaltfläche und ein spinner . Wenn Sie auf die Schaltfläche , die spinner fügen ein neues Element mit den von Ihnen eingegebenen Namen in das EditText. Aber hier ist die Frage, mein adapter.add () - Methode scheint nicht funktioniert...hier ist mein code:
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) {
}});
}
}
Dank! ...noch waitting
InformationsquelleAutor der Frage allen | 2010-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie haben Ihre ArrayAdapter Sie noch nicht zugewiesen ein skalierbarer Liste, um Sie, so, wenn Sie add() kann es nicht erhöhen Sie die Größe der es und wirft eine UnsupportedOperationException.
Probieren Sie etwas wie dieses:
Sollten Sie eine Liste. Mit einem Array wie CharSequence[] würden Sie erhalten die gleiche UnsupportedOperationException Ausnahme.
InformationsquelleAutor der Antwort Javi
Javi ist rechts, außer für nicht-Referenz ein array für den zweiten parameter.
InformationsquelleAutor der Antwort trgraglia
Ich glaube, das ist working as designed, aber nicht wie erwartet. ArrayAdapter verwendet, um nur ein array, aber die Liste der Konstruktor wurde später Hinzugefügt. Ich vermute, dass Ihr nur tun, eine toArray() auf der Liste. Dies ist der Grund, warum müssen Sie entweder Anruf hinzufügen, auf den adapter, oder erstellen Sie einen neuen adapter, wenn Sie Ihre Liste ändert.
InformationsquelleAutor der Antwort AdamC
können Sie erstellen eine arraylist und kopieren Sie alle der Rückgriff auf dieses Objekt dann erstellen arrayadaptor und senden diese arraylist und in onclicklistener des Buttons, fügen Sie edittext Inhalt zu arraylist-Objekt, dann rufen Sie notifydatasetchanged von adator
InformationsquelleAutor der Antwort Hossein