Android:Spinner onItemSelected给另一个Spinner充气

时间:2012-03-14 14:21:48

标签: java android spinner android-spinner

我有一个微调器,onItemSelect我需要根据第一个选择打开另一个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 :(得分:0)

据我所知,除非在屏幕上绘制,否则旋转器不会打开。 所以在filterTimeSpinner.performClick()之前,您应该将新的微调器附加到某个现有布局。

但是,我已经通过上下文菜单为您的需求做了一些模拟工作。

我将一个上下文菜单注册到微调器(如果需要,它可以设计成看起来像微调器行),当选择一个项目时,我打开上下文菜单。 (效果不一样吗?)

希望它有所帮助。
弗拉德