2011-08-16 4 views
0

J'ai un objet Spinner qui contient un tableau de chaînes contenant les 50 états des États-Unis.Remplissage d'un compteur dépendant d'un compteur indépendant

J'ai aussi quelques tableaux qui contiennent des listes de villes pour les différents états. Ce que je veux faire est de peupler le fileur dépendant avec le tableau des villes de l'état qui a été choisi par l'autre fileur.

Pour exampe:

Première spinner sélectionnée - Alaska

deuxième spinner - Anchorage, Fairbanks, Ketchikan, Kodiak.

Un autre exemple:

Première spinner sélectionnée - Floride

deuxième spinner - Key West, Tallahassee. Le problème est que je ne suis pas sûr comment peupler le spinner dépendant basé sur le spinner d'état sélectionné.

L'adaptateur de matrice que j'utilise accepte une valeur entière qui fait référence au tableau utilisé pour remplir le compteur.

Répondre

0

Je ne sais pas l'API exacte que vous appelle vous utilisez, mais voici l'approche générale j'utiliser:

class CitySpinnerFactory { 

    Map<String,Spinner> stateToCitySpinner = new HashMap<String,Spinner>(); 

    public void map(String state, Spinner citiesForState) { 
     stateToCitySpinner.put(state,citiesForState); 
    } 

    public Spinner spinnerForState(String state) { 
     return stateToCitySpinner.get(state); 
    } 

} 

Et plus tard vous pourriez faire pour peupler les villes et les États

Spinner states = new Spinner(); 
Spinner cities = null; 
CitySpinnerFactory cityFactory = new CitySpinnerFactory(); 

states.add("Alabama"); 
cities = new Spinner(); 
cities.add("Birmingham"); // city in AL 
cities.add("Mobile"); // city in AL 
cityFactory.map("Alabama",cities); 

states.add("Alaska"); 
cities = new Spinner(); 
cities.add("Juneau"); // city in AK 
cities.add("Anchorage"); 
cityFactory.map("Alaska",cities); 
// ... add other states 

Et plus tard, vous pourriez faire pour obtenir les villes sur

String state = states.spin(); // making up method to get a random state... 
Spinner cities = cityFactory.spinnerForState(state); 
String city = cities.spin();