Динамические спиннеры в Android (общий вопрос рабочего процесса) - PullRequest
0 голосов
/ 10 марта 2011

Как этот один , я видел несколько инструкций на этом сайте, но, честно говоря, я не очень получаю это .

Iхотите, чтобы содержимое одного счетчика было основано на предыдущем выборе счетчика, как в сценарии «Штаты и города».В общих чертах, каков рабочий процесс?Фильтруются ли результаты второго счетчика на основе первого счетчика, или второй указатель указывает на совершенно другой список, основанный на первом счетчике?

Для моего собственного простого учебного проекта я построил несколько строк- массивы в strings.xml (AL-города, AK-города, AR-города и т. д.).Я бы хотел, чтобы счетчик городов заполнялся из правильного массива на основе выбора из счетчика штатов.Но мне интересно, должен ли я вместо этого иметь один большой многомерный массив «Города», который имеет сокращение состояния в качестве дополнительного идентификатора, а затем указать второй счетчик, используя сокращение состояния в качестве фильтра.Казалось бы, первое обеспечит лучшую производительность.

Любая помощь (и примеры кода) будет принята с благодарностью.Я не новичок в программировании (в основном php, так что я думаю, что скриптинг более точный), но я новичок в Java.Мой код до сих пор с не связанными счетчиками приведен ниже, а второй счетчик указывает на недифференцированный city_array.

Спасибо!

public class Example1 extends Activity {

/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.example1);

   Spinner spinState = (Spinner) findViewById(R.id.spin_state);
    ArrayAdapter<CharSequence> adapter3 = ArrayAdapter.createFromResource(
            this, R.array.state_array, android.R.layout.simple_spinner_item);
    adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinState.setAdapter(adapter3);

    Spinner spinCity = (Spinner) findViewById(R.id.spin_city);
    ArrayAdapter<CharSequence> adapter4 = ArrayAdapter.createFromResource(
            this, R.array.city_array, android.R.layout.simple_spinner_item);
    adapter4.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinCity.setAdapter(adapter4);
}
}

1 Ответ

1 голос
/ 10 марта 2011

Вы можете попытаться получить позицию от вашего первого счетчика, выбранного вами, а затем заполнить ваш второй счетчик после получения правильного массива на основе этой позиции.

Вы должны услышать, как меняется ваш первый адаптер:

    spinner. setOnItemSelectedListener(new MyOnItemSelectedListener());


class MyOnItemSelectedListener implements OnItemSelectedListener {
    public void onItemSelected(AdapterView<?> parent,
        View view, int pos, long id) {
        String choice = parent.getItemAtPosition(pos).toString();
            populateSecondSpinnerMethod(choice)
       }
    }
    public void onNothingSelected(AdapterView parent) {       // Do nothing.
    }
}
...