1

选择项目时,我在监听微调器的用户交互时遇到问题。我知道下面的听众工作完美

spinner.setOnItemSelectedListener(this);

@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
    // your code here
}

@Override
public void onNothingSelected(AdapterView<?> parentView) {
    // your code here
}

但在我的应用程序场景中,我将通过程序更改微调器值,那时它也会触发 onitemselected 事件。但我需要这个事件应该只在微调器上发生用户交互时触发

注意:我不是在谈论初始微调器值选定项。

请让我知道我该如何做到这一点

在此先感谢 Naveenkumar.R

4

2 回答 2

2
tempListener = spinner.getOnItemSelectedListener();
spinner.setOnItemSelectedListener(null);
//change the spinner value...
spinner.setOnItemSelectedListener(tempListener)

更优雅的是,您可以继承 Spinner 类,并创建 'disableOnItemSelectedListener()' 和 'enableOnItemSelectedListener()' 方法,它们的作用与上面的代码相同。

于 2012-06-06T14:24:00.650 回答
0

使用我在以下链接中描述的一种简单技术,可以避免对 onItemSelected 的意外调用。这样,您可以随时自行设置选择而无需担心。检查此问题的已接受答案:

不需要的 onItemSelected 调用

于 2014-04-06T14:53:49.920 回答