2016-07-12 8 views
1

Ich möchte zwei Spinner machen, der erste Spinner haben die Liste der Staaten und zweiten Spinner enthält die Liste der Städte. Wenn ich den bestimmten Zustand aus dem ersten Kreisel auswähle, muss der nächste Kreisel nur die Städte im ausgewählten Zustand anzeigen.Sortieren der Werte in Spinner in Abhängigkeit von der Bedingung

Meine Android Code

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 


    Spinner state = (Spinner) findViewById(R.id.spinnerState); 
    ArrayAdapter<CharSequence> stateadapter = ArrayAdapter.createFromResource(
      this, R.array.item_state, android.R.layout.simple_spinner_item); 
    stateadapter.setDropDownViewResource(R.layout.spinner_layout); 
    state.setAdapter(stateadapter); 




    Spinner city = (Spinner) findViewById(R.id.spinnerCity); 
    ArrayAdapter<CharSequence> cityadapter = ArrayAdapter.createFromResource(
      this, R.array.item_city, android.R.layout.simple_spinner_item); 
    cityadapter.setDropDownViewResource(R.layout.spinner_layout); 
    city.setAdapter(cityadapter); 


}} 

ich alle meine für den Staat und Städte geschaffen haben.

+0

Wie man Städte mit Zustand in XML-Datei zu speichern? –

Antwort

0

einen Zuhörer an den Staat Spinner hinzufügen

state.setOnItemSelectedListener(this);

den Hörer implementieren:

@Override 
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    String selectedState = state.getSelectedItem().toString(); 

    List<String> citiesInState = new ArrayList<>(); 
    // add all cities in selectedState to this list using citiesInState.add(); 
    // this will depend upon how you are storing the cities and states 

    ArrayAdapter<String> cityDataAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_item, citiesInState); 
    cityDataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    city.setAdapter(cityDataAdapter); 

} 
1

Es gibt viele Möglichkeiten, wie Sie dies zum Beispiel erreichen,:

ArrayAdapter<CharSequence> stateadapter; 
switch(state) 
{ 
    case "Florida": 
     { 
      stateadapter = ArrayAdapter.createFromResource(this, R.array.cities_florida, android.R.layout.simple_spinner_item); 
     } break; 
} 

(irgendwie fest codiert)

Die optimalste Lösung ist, sie in einer XML-Datei zu definieren (vielleicht können Sie diese irgendwo im Internet finden) und eine Klasse schreiben, die die Datei liest und alle Städte im ausgewählten Zustand zurückgibt.

lesen: https://developer.android.com/training/basics/network-ops/xml.html