Android-Dynamische Spinner Update
Ich arbeite mit Android und Spinner und ich brauche etwas Hilfe. Ich habe eine Klasse erstellt zwei Spinner und ein button. Der erste Kreisel ist für meine Kategorie, mein zweites ist für meine sub-Kategorie. Was ich versuche zu tun ist, dynamisch zu aktualisieren, die zweite spinner (spinner2). Ich habe versucht, zu verwenden adapter2.klar (), aber das stürzt ab, android, mit einem Fehler "unable to start activity componentinfo nicht unterstützte operation"
Hier ist mein code:
public class MyClass extends MyBaseClass
{
int category;
int sub_category;
ArrayAdapter<String> adapter2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.quizes);
//CATEGORY INFO
final String[] items1 = new String[] {"One", "Two", "Three"};
final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, items1);
adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);
//SUBCATEGORY INFO
final String[] items2 = new String[] {"SOne", "STwo", "SThree"};
final Spinner spinner2 = (Spinner) findViewById(R.id.spinner2);
adapter2 = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, items2);
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(adapter2);
//Capture our button from layout
Button button = (Button)findViewById(R.id.button1);
//Register the onClick listener with the implementation above
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//do something when the button is clicked
startActivity(new Intent(MyClass.this, GoToOtherClass.class));
}
});
//SELECTOR CONTROL FOR SPINNER1 {CATEGORY}
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
MyClass.this.category = spinner1.getSelectedItemPosition();
//OTHER STUFF
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
//SELECTOR CONTROL FOR SPINNER2 {SUB-CATEGORY}
spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
MyClass.this.sub_category = spinner2.getSelectedItemPosition();
//OTHER STUFF
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
return true;
}
}
Verstehe ich die .clear()/.add () - Methoden, aber immer wenn ich versuche clear()/add() mein Programm stürzt ab, was muss ich tun, um Dinge zu reparieren, so dass ich ändern kann, die spinner2 Inhalt für meine sub-Liste Kategorie? Jede Beratung würde helfen, da habe ich Stunden damit verbracht, Dinge zu tun wie:
Objekt t=adapter2.getitem(0);
spinner2.entfernen((String) t);
oder adapter2.clear () - und noch ein paar andere tricks und ich habe keine weiteren Ideen. Ich bin immer noch lernen, android. Ich habe versucht, einen Blick auf einige andere Beiträge hier auf stackoverflow und google, aber war nicht sicher, wie, um Ihre Ideen zu arbeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem Sie den Inhalt des zweiten Spinner, müssen Sie rufen Sie
adapter2.notifyDataSetChanged()
. Ohne diesen Anruf, der UI-nicht-update mit dem neuen Inhalt der Spinner, und du könntest auch Probleme haben, verweisen auf Dinge, die nicht mehr existieren.Versuchen, diesen Code..