Android Spinner删除OnItemSelectedListener

时间:2012-11-26 13:58:24

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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