Android: Spinner onItemSelect надуть другой Spinner - PullRequest
3 голосов
/ 14 марта 2012

У меня есть счетчик, с помощью которого onItemSelect мне нужно открыть другой счетчик на основе выбора в первом. Вот код ... Я могу накачать первый счетчик, но при выборе записи ничего не происходит

Spinner filterSpinner = new Spinner(SearchResultsActivity.this);
            filterSpinner.setPrompt("Filter By");
            ArrayAdapter<String> filterSpinnerArrayAdapter = new ArrayAdapter<String>(
                    SearchResultsActivity.this,
                    android.R.layout.simple_spinner_item,
                    filterSpinnerArray);
            filterSpinnerArrayAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            filterSpinner.setAdapter(filterSpinnerArrayAdapter);
            filterSpinner.performClick();
            filterSpinner.setOnItemSelectedListener(new FilterItemSelectedListener());

и вот код для обращения с вертушкой onItemSelected:

public class FilterItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos,
            long id) {
        switch (pos) {
        case 0:

            Spinner filterBusSpinner = new Spinner(SearchResultsActivity.this);
            filterBusSpinner.setPrompt("Filter Buses By");
            ArrayAdapter<String> filterBusSpinnerArrayAdapter = new ArrayAdapter<String>(
                    SearchResultsActivity.this,
                    android.R.layout.simple_spinner_item,
                    filterByBusSpinnerArray);
            filterBusSpinnerArrayAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            filterBusSpinner.setAdapter(filterBusSpinnerArrayAdapter);
            filterBusSpinner.performClick();
            break;
        case 1:
            Spinner filterTimeSpinner = new Spinner(SearchResultsActivity.this);
            filterTimeSpinner.setPrompt("Filter By Time");
            ArrayAdapter<String> filterTimeSpinnerArrayAdapter = new ArrayAdapter<String>(
                    SearchResultsActivity.this,
                    android.R.layout.simple_spinner_item,
                    filterByBusSpinnerArray);
            filterTimeSpinnerArrayAdapter
                    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            filterTimeSpinner.setAdapter(filterTimeSpinnerArrayAdapter);
            filterTimeSpinner.performClick();
            break;
        }
    }

    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
}

Любая помощь будет принята с благодарностью ...

1 Ответ

0 голосов
/ 22 апреля 2012

Насколько я знаю, прядильщик не откроется, если он не нарисован на экране. поэтому перед filterTimeSpinner.performClick () следует прикрепить новый счетчик к некоторому существующему макету.

но я сделал что-то похожее на ваши потребности с помощью контекстного меню.

Я регистрирую контекстное меню для счетчика (который может быть сконструирован так, чтобы при необходимости выглядеть как ряды счетчика), и когда элемент выбран, я открываю контекстное меню. (тот же эффект, не так ли?)

надеюсь, это поможет.
Влад

...