我为我的 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/