将 OnFocusChangeListener 和 OnItemSelectedListener 应用于 Spinner

Applying OnFocusChangeListener and OnItemSelectedListener to 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 的情况下它只需要单击一次。有什么方法可以将两个操作合并为一个监听器吗?

谢谢...

尝试在 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);
    }