2016-11-28 5 views
-4

Ich möchte, dassConnect Werte mit zwei Spinnern

Wenn ich ein Element aus spinner1 wählen, um die Werte in spinner2 ändern sich entsprechend

für Beispiel

Als ich "USA" von spinner1 wählen, „Los Angeles "und" New York "werden in spinner2 angezeigt.
Wenn ich "Deutschland" von Spinner1 wähle, werden "Berlin" und "München" in Spinner2 angezeigt.

+2

unter entsprechenden Links finden: http://stackoverflow.com/questions/29474829/how-to-make-spinner-depends-on-another-spinner –

Antwort

0

so etwas wie dieses Versuchen:

private void setSpinner1() { 
    Spinner spinner1 = (Spinner) findViewById(R.id.spinner1); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.cities, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner1.setAdapter(adapter); 
    String[] countries = getResources().getStringArray(R.array.countries); 
    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { 

     public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
      loadContentOnSpinner2(countries[pos]); 
     } 

     public void onNothingSelected(AdapterView<?> parent) { 

     } 

    }); 
} 

private void loadContentOnSpinner2(String country) { 
    Spinner spinner2 = (Spinner) findViewById(R.id.spinner2); 
    ArrayAdapter<CharSequence> adapter = null; 
    if(country.equals("USA")) 
     ArrayAdapter.createFromResource(this, R.array.usa_states, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner2.setAdapter(adapter); 
} 

In arrays.xml (res/Werte Ordner):

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string-array name="countries"> 
     <item>USA</item> 
     <item>...</item> 
    </string-array> 
</resources> 

<resources> 
    <string-array name="usa_states"> 
     <item>New York</item> 
     <item>...</item> 
    </string-array> 
</resources> 
+0

Ich habe Fehler in dieser Zeile loadContentOnSpinner2 (Länder .get (pos)) kann das Symbol 'Länder nicht auflösen –

+0

Ich habe den Code aktualisiert. Versuch es noch einmal. – fsnasser

+0

Ich kann den Artikel beim Ausführen des Programms nicht sehen –

0

Sie haben Ihren zweiten Spinner Adpater-Wert in First SpinneronItemSelected diese Methode festgelegt.

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

       // get here State Spinner 
      } 

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

      } 
     }); 
0

beim ersten Spinner mit OnItemSelectedListener selecte dann unter Code verwenden.

spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { 

       public void onItemSelected(AdapterView<?> parentView, 
         View selectedItemView, int position, long id) { 

       if(pos == 1){ 
        spinner2.setAdapter(adapter2); 
       }else{ 
        spinner2.setAdapter(adapter3); 
       } 

       } 

       public void onNothingSelected(AdapterView<?> arg0) {// do nothing 
       } 

      });