4

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

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

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

4

1 回答 1

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
        }    
    }
于 2012-11-26T14:43:12.000 回答