gpt4 book ai didi

Android Spinner 删除 OnItemSelectedListener

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:12 25 4
gpt4 key购买 nike

其他人的问题是不工作,我的问题是它正在工作(但不应该)

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

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

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 Spinner 删除 OnItemSelectedListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13566372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com