其他人有问题,因为不工作,我有问题它工作(它不应该)
我有一个数据模型,它被保存,需要加载回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无效:我正在回调我的侦听器方法.
解决方法
您可以在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 } }