我正在尝试在操作栏中实现微调器。
我在活动onCreate()中有以下内容:
SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this,
R.array.action_list, R.layout.spinner_item);
action_list定义为(res / values / arrays.xml):
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="action_list">
<item>Layout 1</item>
<item>Layout 2</item>
<item>Layout 3</item>
</string-array>
</resources>
spinner_item定义为(res / layouts / spinner_item.xml):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</LinearLayout>
我收到以下异常:
java.lang.ClassCastException: android.widget.LinearLayout cannot be cast
to android.widget.TextView
at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:379)
任何人都可以帮我解决这个问题吗?我做错了什么?
答案 0 :(得分:1)
解决此问题的最快方法是让spinner_item.xml
包含一个TextView
。
ArrayAdapter
的默认实现使用相应项的字符串值填充TextView
。
这个TextView
可以是整个视图,也可以是布局中的特定视图,但是对于最后一种情况,您需要将视图id作为参数传递(例如参见ArrayAdapter (Context context, int resource, int textViewResourceId)
构造函数)。