【问题标题】:Android Spinner remove OnItemSelectedListenerAndroid Spinner 移除 OnItemSelectedListener
【发布时间】:2014-05-04 05:59:15
【问题描述】:

其他人有问题,因为它不起作用,我有它正在工作的问题(它不应该)

我有一个数据模型,已保存,需要加载回GUI,Activity。它有一些微调值。

数据被放置到一个通用的可访问类,一个引用持有者。

活动的 onCreate 它将检查是否处于编辑模式:

editMode = getIntent().getBooleanExtra(EDIT_MODE_KEY, false);

它将从 xml 加载 UI 元素,并开始选择、填充值。 在编辑模式和创建模式下,它应该选择具有数据模型的值。 在运行时(在 onResume() 之后)有一些工作流程:是在 spinner1 处选择了某些东西,而不是应该刷新 spinner2 适配器内容等等。

普通的.setSelection(positiontoSelect); 不起作用,所以我添加了一个延迟的帖子,现在可以正常工作了。

我的问题是:我想为临时删除选择侦听器,调用选择并添加回侦听器。

这里是代码,需要修改:

          if (editedTimezonePosition > -1) {                        
                final int positiontoSelect = editedTimezonePosition;
                new Handler().postDelayed(new Runnable() {
                    public void run() {
                        OnItemSelectedListener listener = spSelectTimezone.getOnItemSelectedListener();
                        spSelectTimezone.setOnItemSelectedListener(null);
                        spSelectTimezone.setSelection(positiontoSelect);
                        spSelectTimezone.setOnItemSelectedListener(listener);                   
                    }
                }, 250);            
            }

将侦听器设置为 null 无效:我正在回调我的侦听器方法。

如果您有任何解决方法的想法,请分享!

【问题讨论】:

    标签: android android-spinner android-2.3-gingerbread


    【解决方案1】:

    您可以在onItemSelected 方法中放置一个计数器变量。如果它是 0(意味着第一次调用该方法),除了递增变量之外什么都不做。如果大于 0,则执行其余代码。

    private int mSpinnerSelectionCount=0;
    
    public void onItemSelected(AdapterView<?> parent, View view,
        int pos, long id) {
            if(mSpinnerSelectionCount == 0){
                mSpinnerSelectionCount++;
            } else {
                // Your normal selection code here
            }    
        }
    

    【讨论】:

    • +1,好主意。我会试试。至于改进:我可以为 mSpinnerSelectionCount 编写一个设置器并以这种方式修复 android os 错误? :) 当我需要禁用时,使用值为 0 的设置器
    • 实际上,在您的情况下,我只会使用 boolean (使用您前面提到的 setter 方法)。我的示例方法是int,因为我从一些我手头的代码中提取了它,我需要跟踪在微调器上进行选择的次数。 :)
    • 它正在工作,我正在使用设置器:设置为 0,-1,我正在检查是否低于 1 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多