将OnFocusChangeListener和OnItemSelectedListener应用于Spinner

时间:2015-04-29 10:09:41

标签: android listener android-spinner

我有一个微调器,可以使用标准的OnItemSelectedListener来提供一组选项:

s.setAdapter(adapter);
s.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int selectedPosition, long arg3) {

        if (selectedPosition == 0) {
            // do stuff
        } else {
            // other stuff
        }
    }

    public void onNothingSelected(AdapterView<?> arg0) {
    }
});

但是,我有一个新的要求,当用户点击Spinner使用它时,相应的Button被禁用。我已将以下OnFocusChangeListener添加到Spinner:

s.setFocusable(true);
s.setFocusableInTouchMode(true);
s.setOnFocusChangeListener(new OnFocusChangeListener() {

    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            distanceButton.setEnabled(false);
        } else {
            distanceButton.setEnabled(true);
        }
    }

});

这有效,并禁用按钮。但是,微调器现在需要两次单击以显示选项,当没有OnFocusChangeListener时,它只需要一次单击。有没有办法将两个操作合并为一个Listener?

...谢谢

1 个答案:

答案 0 :(得分:2)

尝试在if子句之后调用super.onFocusChange(v,hasFocus)。

 public void onFocusChange(View v, boolean hasFocus) {
        if (hasFocus) {
            distanceButton.setEnabled(false);
        } else {
            distanceButton.setEnabled(true);
        }
        super.onFocusChange(v, hasFocus);
    }