Android - 操作栏中的微调器 - 布局文件

时间:2014-05-29 21:51:21

标签: android android-actionbar spinner

我正在尝试在操作栏中实现微调器。

我在活动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)

任何人都可以帮我解决这个问题吗?我做错了什么?

1 个答案:

答案 0 :(得分:1)

解决此问题的最快方法是让spinner_item.xml包含一个TextView

ArrayAdapter的默认实现使用相应项的字符串值填充TextView

这个TextView可以是整个视图,也可以是布局中的特定视图,但是对于最后一种情况,您需要将视图id作为参数传递(例如参见ArrayAdapter (Context context, int resource, int textViewResourceId)构造函数)。