android - android 上的 ArrayAdpater illegalStateException

标签 android listview android-arrayadapter

我为我的 listView 使用 arrayAdpater ,但我遇到了这个异常,我不明白为什么,我插入了我的 layout.xml 的 ID和 listView 的 ID当我初始化 arrayAdpater ,但我想不出解决这个问题的办法

create_boundary_map.xml (在其上定义了 listView 的文件)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="400px"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="138dp" >
    </ListView>

</LinearLayout>

在一个函数中我这样做:

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.create_boundary_map, R.id.list_view,
                this.fooStrings());

我的日志:

09-01 18:34:56.121: E/ArrayAdapter(18757):      You must supply a resource ID for a TextView
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
09-01 18:34:56.160: E/AndroidRuntime(18757):    FATAL EXCEPTION: main
09-01 18:34:56.160: E/AndroidRuntime(18757):    java.lang.IllegalStateException: ArrayAdapter requires the resource ID to be a TextView
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:386)
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.widget.AbsListView.obtainView(AbsListView.java:2465)
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.widget.ListView.makeAndAddView(ListView.java:1769)
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.widget.ListView.fillDown(ListView.java:672)
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.widget.ListView.fillFromTop(ListView.java:733)
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.widget.ListView.layoutChildren(ListView.java:1622)
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.widget.AbsListView.onLayout(AbsListView.java:2300)
09-01 18:34:56.160: E/AndroidRuntime(18757):    at android.view.View.layout(View.java:14061)

提前致谢。

最佳答案

适配器采用具有 TextView 而不是 ListView 的布局。

创建一个新的 xml,如 list_item.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/item"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

然后在 Activity 的 onCreate 内部使用您拥有的布局 (create_boundary_map.xml):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.create_boundary_map);
    // Use the adapter to populate your list:
    ListView listView = (ListView) findViewById(R.id.list_view);


    ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.item, this.fooStrings());

    listView.setAdapter(arrayAdapter);
}

关于android - android 上的 ArrayAdpater illegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25610142/

相关文章:

java - 由于 mContext 对象,Android 中的编译错误

java - 在操作栏上搜索 ListView 项目

Android AsyncTask SoapObject 请求问题

java - Android 自定义 AutoCompleteTextView 与自定义适配器

java - 检索 wifi 连接状态(Android)

Android EditText 在 ListView 中滚动时丢失内容

java - Android:简单的 XML SAX 解析器 - 反复显示相同的数据

java - 如何在 android 上的 onListItemClick 方法中为 ListView 的选定项目着色

android - 在 android 中使用 ListView 无法正常播放视频

java - Recyclerview 在使用通用适配器和查看器时不显示数据