gpt4 book ai didi

android - 如何在不调用 onItemSelected 的情况下设置 Spinner 项目

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:21 25 4
gpt4 key购买 nike

是否可以在不调用 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);

返回到之前的选择,但这会再次重新创建我不想要的 View ,因为我已经在 View 中我只是想表明我在微调器中的 View 中

最佳答案

非常简单!

spinner.adapter = adapter
spinner.setSelection(pos) // whatever integer!
spinner.setTag("bug init")
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(p0: AdapterView<*>?) = Unit
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, position: Int, p3: Long) {

if (spinner.getTag().equals("bug init")) {
spinner.setTag("okay, no more bug")
}
else {
whateverMethod()
}
}

当你将方法调用放在 spinner 监听器中时,由于 init 的错误在 2020 年仍然存在,因此方法将执行 self 的风险很大!

我就是这样解决的!

关于android - 如何在不调用 onItemSelected 的情况下设置 Spinner 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16447858/

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