Android Spinner没有调用onItemSelected

时间:2014-11-06 12:47:34

标签: android android-spinner

编辑:我做了一个解决方法,并解决了我的问题。 我对微调器的布局看起来像

<LinearLayout>
    <Spinner>
    <TextView> //used as a label
</LinearLayout>

我删除了LinearLayout。虽然只要选择了State,City旋转器就不会自动填充项目,但我可以手动输入City的值。

线性布局怎么可能搞乱我的微调器的行为?


我有一个注册表格,底部有多个Edittexts和3个微调器,即State,City,Area。

我希望能够做的是以下

  1. onItemSelect州,城市和区域将显示其列表中的第一项
  2. onItemSelect a City,Area将显示其列表中的第一个项目
  3. onItem选择一个区域,它将显示我选择的项目。
  4. Code在Kitkat上工作正常。但是在JellyBean及以下,每当我选择一个State时,其他的微调器都不显示任何东西。选择状态后,当您单击“城市”时,它将显示正确的数据集,但是当我单击某个项目时,微调器仍为空白。 (onItemSelected不会触发。)

    奇怪的是,每当微调器行为不端时,如果我点击我视图中的一个Edittexts(将显示softKeyboard)&gt;按下后退按钮&gt; Spinner工作。我不确定它是否与焦点有关?但我已经尝试将微调器设置为可聚焦和focusableInTouchMode然后请求焦点,但无济于事。

    这就是我如何设置微调器的适配器和内容

    state.setAdapter(stateAdapter);
        state.setSelection(0, false);
        state.setOnItemSelectedListener(new OnItemSelectedListener() {
    
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                stateSelection = parent.getItemAtPosition(position).toString();
    
                cityAdapter = new ArrayAdapter<String>(getActivity(), R.layout.sherlock_spinner_item, getDistinctCity(stateSelection));
                cityAdapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
                city.setAdapter(cityAdapter);
    
                areaAdapter = new ArrayAdapter<String>(getActivity(), R.layout.sherlock_spinner_item, new String[]{});
                areaAdapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
                area.setAdapter(areaAdapter);
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    
        city.setOnItemSelectedListener(new OnItemSelectedListener() {
    
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                citySelection = parent.getItemAtPosition(position).toString();
    
                areaAdapter = new ArrayAdapter<String>(getActivity(), R.layout.sherlock_spinner_item, getDistinctArea(stateSelection, citySelection));
                areaAdapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
                area.setAdapter(areaAdapter);
    
                }
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    
        area.setOnItemSelectedListener(new OnItemSelectedListener() {
    
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                areaSelection = parent.getItemAtPosition(position).toString();
    
                postalSelection = getDistinctPostal(stateSelection, citySelection, areaSelection);
                postal.setText(postalSelection);
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    

    如果有人能向我解释为什么微调器会表现得像这样,或者可能引导我走向正确的方向,那就太棒了。谢谢

0 个答案:

没有答案