【问题标题】:Android Spinner user interaction of on item selected选定项目的 Android Spinner 用户交互
【发布时间】:2014-04-06 22:53:49
【问题描述】:

我在选择项目时聆听旋转器的用户交互问题。 我知道下面的听众工作完美

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

【问题讨论】:

  • 将代码放入onNothingSelected方法

标签: java android spinner


【解决方案1】:
tempListener = spinner.getOnItemSelectedListener();
spinner.setOnItemSelectedListener(null);
//change the spinner value...
spinner.setOnItemSelectedListener(tempListener)

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

【讨论】:

  • 它工作正常,但我需要在设置监听器之前给一些延迟。让我知道是否有任何其他解决方案可用而不设置延迟
  • 我已经解决了一些其他问题。现在它可以在没有设置延迟的情况下工作。谢谢
  • 问题是微调器动画并在完成时进行回调。 spinner.setSelection(i, false);将禁用动画和延迟回调。
【解决方案2】:

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

Undesired onItemSelected calls

【讨论】:

    猜你喜欢
    • 2011-08-14
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2014-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多