设置适配器时如何避免让android spinner调用itemselectedlistener?

emm*_*mby 7 android android-spinner

似乎android的Spinner类(一般可能是ListView,虽然我不确定)onItemSelected()在你调用之后调用你的OnItemSelectedListener的方法setAdapter(),即使用户还没有明确选择任何东西.

我可以看到这在许多情况下如何有用,但有时我只想onItemSelected()在实际特别选择项目时调用它.

有没有办法控制此行为并onItemSelected()在设置适配器后调用Spinner ?

emm*_*mby 5

我已经很长时间没有使用此解决方案了,所以我不确定它是否可以按预期工作,但是到目前为止,我对这种解决方法很幸运:

    spinner.setOnItemSelectedListener( new OnItemSelectedListener() {
        protected Adapter initializedAdapter = null;

        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            // Always ignore the initial selection performed after setAdapter
            if( initializedAdapter !=parent.getAdapter() ) {
                initializedAdapter = parent.getAdapter();
                return;
            }

            ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

  • 如果用户按下第一项,则上面的代码无效。 (2认同)