android - Spinner onItemSelected 被错误调用(没有用户操作)

标签 android spinner android-spinner

我有一个在对话框 View 中显示的微调器,并且在对话框开始时调用 onItemSelected。我真的不想处理这个,但只有当用户做出选择时。所以我要么需要阻止这种情况(可能是因为没有设置默认值?),要么我需要知道不是用户在做这个选择?

最佳答案

Bill Mote 解决方案精神的另一个选择是使 OnItemSelectedListener 也成为 OnTouchListener。然后可以在 onTouch 方法中将用户交互标志设置为 true,并在处理了选择更改后在 onItemSelected() 中重置。我更喜欢这个解决方案,因为用户交互标志是专门为微调器处理的,而不是为 Activity 中可能影响所需行为的其他 View 处理。

在代码中:

为微调器创建监听器:

public class SpinnerInteractionListener implements AdapterView.OnItemSelectedListener, View.OnTouchListener {

    boolean userSelect = false;

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        userSelect = true;
        return false;
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        if (userSelect) { 
            // Your selection handling code here
            userSelect = false;
        }
    }

}

将监听器作为 OnItemSelectedListenerOnTouchListener 添加到微调器:

SpinnerInteractionListener listener = new SpinnerInteractionListener();
mSpinnerView.setOnTouchListener(listener);
mSpinnerView.setOnItemSelectedListener(listener);

关于android - Spinner onItemSelected 被错误调用(没有用户操作),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5124835/

相关文章:

android - 如何修复弯曲 Android 手机顶部的空白空间

android - 如何在 token 验证器和注销用户中显示错误消息

android - 在APK META-INF/jersey-module-version中复制的重复文件

android - 使用 Espresso 测试 Android NavigationView 菜单项

javascript - 我怎样才能制作一个没有重复的随机数组?

html -::-webkit-inner-spin-button 在 Firefox 上显示

android - 如何更改微调器的颜色而不是下拉项的颜色?

单击时 Android 微调器崩溃

android - 无法在 AlertDialog 中显示 Spinner DropDown 列表 - Android

android - 单击 listViewItem 时显示带有单选按钮的 alertDialog