其他人遇到的问题是不起作用,而我的问题是它正在工作(而不应该)
我有一个数据模型,已保存,并需要加载回GUI和Activity。它有几个Spinner值。
数据被放置在一个公共可访问的类中,即引用持有者。
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没有效果:我仍然会收到我的监听器方法的回调。
如果您有任何解决方法,请分享!
boolean
(配合你之前提到的setter方法)。我的示例方法是一个int
,因为我从一些现成的代码中提取出来的,我需要追踪spinner上选择的次数。 :) - Barak