其他人有问题,因为不工作,我有问题它正在工作(它不应该)
我有一个保存的数据模型,需要加载回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无效:我正在回调我的侦听器方法。
如果您有任何想法,请分享!
答案 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
}
}