Android 正在停止从设置选择触发中选择的微调器项

Android 正在停止从设置选择触发中选择的微调器项,android,Android,当我这样做时,我想关闭获取MSelectedListener spinInsuranceList.setSelection(previousSpinnerPos); 我已经创建了自定义类,但现在我想重写onItemSelected,并使用自己的额外参数创建相同的方法,以帮助我停止fire事件 请注意:我已经实现了微调器,它工作正常,所以由于我选择了自定义impl,我现有的工作不会影响 代码: CustomSpinnerClass:我创建了这个自定义类,因为当时我想单击之前选中的同一个项目 im

当我这样做时,我想关闭获取MSelectedListener

spinInsuranceList.setSelection(previousSpinnerPos);
我已经创建了自定义类,但现在我想重写onItemSelected,并使用自己的额外参数创建相同的方法,以帮助我停止fire事件

请注意:我已经实现了微调器,它工作正常,所以由于我选择了自定义impl,我现有的工作不会影响

代码: CustomSpinnerClass:我创建了这个自定义类,因为当时我想单击之前选中的同一个项目

import android.content.Context;
import android.util.AttributeSet;

public class CustomSpinnerClass extends androidx.appcompat.widget.AppCompatSpinner {

    public CustomSpinnerClass(Context context) {
        super(context);
    }

    public CustomSpinnerClass(Context context, int mode) {
        super(context, mode);
    }

    public CustomSpinnerClass(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void setSelection(int position, boolean animate) {
        boolean sameSelected = position == getSelectedItemPosition();
        super.setSelection(position, animate);
        if (sameSelected) {
            //TODO:-> Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
            getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
        }
    }

    @Override
    public void setSelection(int position) {
        boolean sameSelected = position == getSelectedItemPosition();
        super.setSelection(position);
        if (sameSelected) {
            //TODO:-> Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
            getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
        }
    }
}
我找到了这个解决方案,但不知道如何使用:

private Spinner.OnItemSelectedListener spinnerListener
= new Spinner.OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
/* This function is called when you select something from the spinner */
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
/**This line sets the index of the spinner.
Here I have given it as position which
can be  any number with in the index range  ***/
my_spinner.setSelection(position);
}};

如果您不理解我的要求,请阅读:

当我想在不激发听众的情况下设置某些内容时,我所做的是

spinner.setSelectionListener(null);
spinner.setSelection(20);
spinner.setSelectionListener(this);

你能解释一下你的要求吗?你到底想做什么?@MayurCoceptioni我衷心地请求你读一下亲爱的:你可以做一件事,默认情况下管理一个boolen变量false。现在在监听器中检查此变量是否为false不要运行代码。在else条件下,此变量为true。因此,当您设置值时,侦听器将调用,但您的代码不会第一次执行。试试这个,我在代码中也做了同样的事情,而且很有效fine@MayurCoceptioni我尝试了所有这些,它影响到其他事情,也影响到我基于添加/编辑文本的代码,并根据客户的要求编写不同的代码。这就是为什么我要求您提供确切的要求。如果您从本地数据库获取数据,您只需要第一次设置数据,那么它必须像往常一样工作,所以问题是什么?什么是微调器,它是微调器微调器?spinInsuranceList.setOnItemSelectedListenernull;spinInsuranceList.setSelectionpreviousSpinnerPos;spinInsuranceList.setOnItemSelectedListenerthis;我得到的不是spinner.setSelectionListenernull;这不是一个实际的例子,只是给你一个想法。基本上,在调用setSelection之前将侦听器设置为null,然后再次将侦听器设置回null。这样,当您调用setSelection时,您的侦听器为空,并且不会被解雇。让我知道这是否解决了您的问题。我认为这不是一个好主意spinner.setSelectionListenernull;每次都需要重新初始化我正在尝试的代码,但是你能做一些研究并给我解决方案吗?请