Android Spinner-Array ändern

OSbOoL

Mitglied
Hi, ich möchte gerne das Array eines Spinners ändern, wenn auf dem anderen Spinner ein anderes Element ausgewählt wird. D.h. ich habe 2 Spinner, der erste beinhaltet ein Array mit Strings, in diesem Array möchte ich eine Auswahl treffen und dann soll der Listener dem 2. Spinner ein Array zuweisen.

Ich habe schon probiert, in dem Listener den Adapter des Spinners zu ändern. Das funktioniert nicht.
Hier mein Code:

Java:
public class DamenBH extends AppCompatActivity implements AdapterView.OnItemSelectedListener{

    Spinner spinner1;
    Spinner spinner2;

    ArrayAdapter<CharSequence> adapter1;
    ArrayAdapter<CharSequence> adapter65, adapter70, adapter75;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_damen_b_h);


        spinner1 = findViewById(R.id.spinner1);
        adapter1 = ArrayAdapter.createFromResource(this, R.array.beispiel1, android.R.layout.simple_spinner_item);
        adapter1.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
        spinner1.setAdapter(adapter1);
       
        spinner2 = findViewById(R.id.spinner2);
        spinner2.setOnItemSelectedListener(this);
        adapter65 = ArrayAdapter.createFromResource(this, R.array.beispiel2, android.R.layout.simple_spinner_item);
        adapter65.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
        spinner2.setAdapter(adapter65);


        adapter70 = ArrayAdapter.createFromResource(this, R.array.beispiel3, android.R.layout.simple_spinner_item);
        adapter70.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
        adapter75 = ArrayAdapter.createFromResource(this, R.array.beispiel4, android.R.layout.simple_spinner_item);
        adapter75.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
       



        spinner1.setOnItemSelectedListener(this);
       


    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {



        switch (position) {
            case 0:
                spinner2.setAdapter(adapter65);

          break;
            case 1:

                spinner2.setAdapter(adapter70);
                break;
            case 2:
                spinner2.setAdapter(adapter75);
                break;
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
}

Ich hoffe ihr könnt mir helfen. Vielen Dank
 
Hast du mal probiert nach dem setzen des Adapters ein notifyDataSetChanged() auf dem gesetzten Adapter aufzurufen?
 
Wenn ich in dem Listener versuche den Adapter von Spinner2 zu ändern, dann kann ich im Spinner2 keine Auswahl tätigen. D.h. der Spinner wird geöffnet(die Auswahl angezeigt) aber wenn ich dann auf eine Auswahl klicke, dann steht im Spinner trotzdem der erste Wert.
 
Ich kann mir das so noch nicht wirklich vorstellen mit den Problemen... aber ansonsten könntest du natürlich mit nur einem Adapter arbeiten und da mittels clean und addAll alle Werte entfernen und neue Werte eintragen....

Aber kannst du ein kleines (minimales) Projekt mit diesem Verhalten bereit stellen zum ansehen / ausprobieren?
 
Ich kann mir das so noch nicht wirklich vorstellen mit den Problemen... aber ansonsten könntest du natürlich mit nur einem Adapter arbeiten und da mittels clean und addAll alle Werte entfernen und neue Werte eintragen....

Aber kannst du ein kleines (minimales) Projekt mit diesem Verhalten bereit stellen zum ansehen / ausprobieren?
Ich habe soeben den Fehler gefunden:
Habe das Projekt vom Mac auf den PC übertragen, dort hat es funktioniert. Irgendwas muss da mit Android Studio schiefgelaufen sein, auf dem Mac funktioniert jetzt auch alles, aber erst nach einem Neustart.
Vielen Dank für die Mühe.
 

Zurück
Oben