进入活动时自动选择微调项目.我该如何避免这种情况?

use*_*720 14 android android-spinner

我的Android应用程序中有一个微调器,并且onItemSelected()在进入活动时会自动触发其事件.

我该如何避免这种情况?

tha*_*h84 10

我们可以使用一个标志,并在真正触摸微调器时启用它.

private boolean isSpinnerTouched = false; 

spinner.setOnTouchListener(new OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                isSpinnerTouched = true;
                return false;
            }
        });
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapter, View arg1,
                        int arg2, long arg3) {
                    if (!isSpinnerTouched) return;
                    // do what you want 
                    }
        });
Run Code Online (Sandbox Code Playgroud)


Jer*_*ham 6

我已经解决了这个问题,您可以通过不对微调器设置任何默认值来避免这个问题

        int initialposition=spinner.getSelectedItemPosition();
        spinner.setSelection(initialposition, false);
Run Code Online (Sandbox Code Playgroud)

这将避免进入 onItemSelected()


Cha*_*cen 6

要添加Jerry Abraham,您应该在启用setOnItemSelectedListener之前清除选择

  Spinner mSpinner=(Spinner)findViewById(R.id.mySpinner);
  int initialSelectedPosition=mSpinner.getSelectedItemPosition();
  mSpinner.setSelection(initialSelectedPosition, false); //clear selection
  mSpinner.setOnItemSelectedListener(this); //set listener after clearing section
Run Code Online (Sandbox Code Playgroud)


Ole*_*gas 5

没有办法避免这种情况.

您可以添加一些标志,指示应用程序的准备情况,并在onItemSelected()方法中使用它来决定在每种情况下要做什么.