0
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="22px"
        android:layout_height="22px"
        android:layout_marginLeft="4px"
        android:layout_marginRight="10px"
        android:layout_marginTop="4px"
        android:src="@drawable/ic_launcher" >
    </ImageView>

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@+id/label"
        android:textSize="20px" >
    </TextView>

</LinearLayout> 

以上是我的布局“ messages.xml

public class TabClass extends ListFragment {    

    @Override
      public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        String[] values = new String[] { "label1", "label2", "label3"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
            R.layout.messages, values);
        setListAdapter(adapter);
      }

      @Override
      public void onListItemClick(ListView l, View v, int position, long id) {
        // Do something with the data

      }

}

当我尝试编译应用程序时出现此错误"ArrayAdapter requires the resource ID to be a TextView"

4

1 回答 1

2

您的messages.xml 包含一个带有ImageView 和TextView 的LinearLayout。相反,它应该只包含一个 TextView。请参阅此处的文档。您的 ArrayAdapter 构造函数的第二个参数采用:

包含在实例化视图时使用的 TextView 的布局文件的资源 ID。

提示:您可能想要创建自定义适配器类(扩展 BaseAdapter)而不是 ArrayAdapter 类。

于 2013-03-20T14:27:35.560 回答