Android Spinner删除OnItemSelectedListener

其他人有问题,因为不工作,我有问题它工作(它不应该)

我有一个数据模型,它被保存,需要加载回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无效:我正在回调我的侦听器方法.

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

解决方法

您可以在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
        }    
    }

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...