使用OnItemSelectListener选择相同的值

时间:2013-12-27 15:09:41

标签: android spinner

这里已多次询问过,但我不知道为什么这对我不起作用。我的布局上有多个微调器,它们会根据选定的先前微调器值进行更新。我希望能够在同一个微调器上多次选择一个值。

我在使用此代码时遇到问题:

public class NDSpinner extends Spinner {

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

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

  public NDSpinner(Context context, AttributeSet attrs, int defStyle)
  { super(context, attrs, defStyle); }

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

这应该与我现有的代码一起使用,但由于某种原因,它不是。

我有多个微调器,这里只有一个表明我正在使用它:

vTypeSpinner = (NDSpinner) findViewById(R.id.typeSpinner);

这是我的XML显示我正在引用它:

<com.example.productguide.NDSpinner
    android:id="@+id/typeSpinner"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_alignLeft="@+id/textView01"
    android:layout_centerVertical="true"
    android:layout_below="@+id/textView01" />

这是LogCat错误

12-27 10:05:06.165: E/AndroidRuntime(3089): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.productguide/com.example.productguide.PowersportsEquivalent}: android.view.InflateException: Binary XML file line #61: Error inflating class com.example.productguide.NDSpinner

以下是我之前因某些原因没有看到的更多LogCat:

12-27 10:05:06.165: E/AndroidRuntime(3089): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.productguide.NDSpinner" on path: DexPathList[[zip file "/data/app/com.example.productguide-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.productguide-2, /system/lib]]

1 个答案:

答案 0 :(得分:0)

在微调器中有一个虚拟值,它总是第一个。并对旋转器进行一次验证检查,如果选择了适当与否。如果选择的值是虚拟值,则检查应该失败。