Android:Spinner onItemSelect 调用另一个 Spinner

3

我有一个Spinner,需要在onItemSelect时根据第一个Spinner的选择打开另一个Spinner。这是代码...我能够填充第一个Spinner,但选择一个条目后什么都没有发生。

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
据我所知,除非在屏幕上绘制旋转器,否则它不会打开。 因此,在调用filterTimeSpinner.performClick()之前,您应该将新的旋转器附加到某个现有布局中。
但是,我已经使用上下文菜单做了类似于您需求的事情。
我向旋转器注册了一个上下文菜单(如果需要,可以设计成看起来像旋转器行),当选择项目时,我打开上下文菜单。(效果相同,不是吗?)
希望能有所帮助。
Vlad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接