ArrayAdapter.clear()不支持的操作异常

时间:2017-10-01 19:32:03

标签: android android-arrayadapter android-spinner

所以我有一个应用程序,我有几个下拉旋转器,其中几个我想根据另一个微调器选择的选项更改其选项。我这样做的计划是:

    E/AndroidRuntime: FATAL EXCEPTION: main
          Process: com.example.benhouse.weatherview, PID: 25791
          java.lang.UnsupportedOperationException
              at java.util.AbstractList.remove(AbstractList.java:638)
              at java.util.AbstractList$SimpleListIterator.remove(AbstractList.java:75)
              at java.util.AbstractList.removeRange(AbstractList.java:658)
              at java.util.AbstractList.clear(AbstractList.java:466)
              at android.widget.ArrayAdapter.clear(ArrayAdapter.java:273)
              at com.example.benhouse.weatherview.MainActivity$3.onItemSelected(MainActivity.java:102)
              at android.widget.AdapterView.fireOnSelected(AdapterView.java:924)
              at android.widget.AdapterView.dispatchOnItemSelected(AdapterView.java:913)
              at android.widget.AdapterView.-wrap1(AdapterView.java)
              at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:883)
              at android.os.Handler.handleCallback(Handler.java:739)
              at android.os.Handler.dispatchMessage(Handler.java:95)
              at android.os.Looper.loop(Looper.java:148)
              at android.app.ActivityThread.main(ActivityThread.java:5417)
              at java.lang.reflect.Method.invoke(Native Method)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

在spinner的onItemSelected()方法的情况下,该方法指示更改其他微调器的内容。从理论上讲,我的想法是清除第二个微调器(product_adapter),然后使用product_adapter.add(array []将由makeArray()(它返回doc中指定的CharSequences数组)的新数组添加到微调器的适配器中。我]然后调用.notifyDataSetChanged()来形式化它。但是,当它遇到第一行时,应用程序崩溃并产生以下堆栈跟踪:

ArrayAdapter<CharSequence> T_spinnerAdapter = new ArrayAdapter(this, R.layout.support_simple_spinner_dropdown_item, makeArray("GFS"));
Time_spin.setAdapter(T_spinnerAdapter);

为什么我会收到此错误以及如何解决?

编辑:这就是我正在填充我想要改变的微调器的方式:

body {
  margin: 40px;
}

.wrapper {
  display: grid;
  grid-template-columns: 100px 100px 100px;
  grid-gap: 10px;
  background-color: #fff;
  color: #444;
}

.box {
  background-color: #444;
  color: #fff;
  border-radius: 5px;
  padding: 20px;
  font-size: 150%;
}

.c {
		grid-column-start: 2;
		grid-column-end: 3;
		grid-row-start: 1;
		grid-row-end: 2;
	}
	.d {
		grid-column-start: 2;
		grid-column-end: 3;
		grid-row-start: 2;
		grid-row-end: 3;
	}
	.f {
		grid-column-start: 3;
		grid-column-end: 4;
		grid-row-start: 2;
		grid-row-end: 3;
	}
	.a {
		grid-column-start: 1;
		grid-column-end: 2;
		grid-row-start: 1;
		grid-row-end: 2;
	}
	.b {
		grid-column-start: 1;
		grid-column-end: 2;
		grid-row-start: 2;
		grid-row-end: 3;
	}
	.e {
		grid-column-start: 3;
		grid-column-end: 4;
		grid-row-start: 1;
		grid-row-end: 2;
	}

编辑2:所以我有点白痴。我试图修改产品微调器而不是时间微调器(预期的微调器),并从values.xml中的数组初始化产品微调器。也许不喜欢自己修改自己。感谢间接帮助,因为它引导我思考和解开我的代码。

1 个答案:

答案 0 :(得分:1)

您正在使用不支持删除操作的列表集合。

如果您通过提供项目数组来构建HEAD

ArrayAdapter

Actual implementation使用Arrays.asList()

创建固定长度列表

修正:

ArrayAdapter (Context context, 
                int resource, 
                T[] objects)

这是一个常见的错误。另一个常见错误是提供不可变列表。