Заполнение зависимого счетчика из независимого счетчика - PullRequest
0 голосов
/ 16 августа 2011

У меня есть объект Spinner, который содержит массив строк, заполненных 50 штатами в Соединенных Штатах.

У меня также есть еще несколько массивов, которые содержат списки городов для разных штатов. То, что я хочу сделать, это заполнить зависимый счетчик массивом городов из состояния, которое было выбрано другим счетчиком.

Для экзамена:

Выбран первый спиннер - Аляска

Второй спиннер - Anchorage, Fairbanks, Ketchikan, Kodiak.

Другой пример:

Выбран первый спиннер - Флорида

Второй спиннер - Ки-Уэст, Таллахасси.

Проблема в том, что я не уверен, как заполнить зависимый счетчик на основе выбранного счетчика состояния.

Используемый мной адаптер массива принимает целочисленное значение, которое ссылается на массив, используемый для заполнения счетчика.

1 Ответ

0 голосов
/ 16 августа 2011

Я не знаю, какие именно API-вызовы вы используете, но вот общий подход, который я бы использовал:

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);
    }

}

И позже вы можете сделать это для заполнения городов и штатов

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

А позже вы можете сделать это, чтобы вывести города

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