【发布时间】:2020-04-26 03:59:53
【问题描述】:
是否可以在不调用onItemSelected 方法的情况下将选定的微调器位置更改为某个值?
基本上我要做的是返回微调器中先前选择的项目,因为其中一个项目在选择时会显示一个对话框。当用户点击后退按钮时,微调器仍然显示他们在对话框被关闭时显示的位置。
那么有没有办法在使用spinner.setSelection(position) 恢复时防止它被调用,或者有没有办法让显示对话框的位置保持选中状态?
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
switch(arg2){
case 0:
previousSelection = 1;
mNavButtonClick.onNavButtonClick(1);
break;
case 1:
previousSelection = 2;
mNavButtonClick.onNavButtonClick(2);
break;
case 2:
previousSelection = 3;
mNavButtonClick.onNavButtonClick(3);
break;
case 3:
previousSelection = 4;
mNavButtonClick.onNavButtonClick(4);
break;
case 4:
previousSelection = 5;
mNavButtonClick.onNavButtonClick(5);
break;
case 5:
//this case shows the dialog
mNavButtonClick.onNavButtonClick(6);
break;
default:
break;
}
}
显示对话框,用户单击后退按钮关闭对话框并在onDismiss 中调用
spinner.setSelection(previousSelection);
返回之前的选择,但这会重新创建我不想要的视图,因为我已经在视图中,我只想显示我在微调器中的视图上
【问题讨论】:
-
尝试刷新适配器。
-
@NarendraDroidWorm 只是要重建列表,将选择位置设置为
0,这与在最后选择的位置调用setSelection并没有太大区别 -
发布你当前的代码,代码比文字描述的更多
-
@StinePike 代码添加
-
所以如果我没记错的话,你的问题是取消后对话框再次显示......对吗?