问题描述
MainActivity 如下:
package cn.han.listview01;import android.app.Activity;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;public class MainActivity extends Activity { private ListView lv_music; @Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);ListView list1 = (ListView) findViewById(R.id.list1);String arr1[] = {'1111111111','222222222222','3333333333'};ArrayAdapter adapter1 = new ArrayAdapter<>(this,R.layout.array_item,arr1);list1.setAdapter(adapter1); }}
2.app 一进去页面
<?xml version='1.0' encoding='utf-8'?><android.support.constraint.ConstraintLayout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools' android:layout_width='match_parent' android:layout_height='match_parent' tools:context='cn.han.listview01.MainActivity'> <ListViewandroid:layout_width='368dp'android: android:entries='@array/books'android:pider='#f00'android:piderHeight='2px'android:padding='10dp'android:layout_height='wrap_content' /></android.support.constraint.ConstraintLayout>
3.单个item 页面
<?xml version='1.0' encoding='utf-8'?><LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='match_parent'> <TextViewandroid: android:layout_width='match_parent'android:layout_height='wrap_content'android:layout_weight='1'android:textSize='24dp'android:padding='10dp'android:shadowColor='#f0f'android:shadowDx='4'android:shadowDy='4'android:shadowRadius='2'android:text='TextView' /></LinearLayout>
现在控制台提示 03-30 16:32:56.357 15648-15648/cn.han.listview01 E/ArrayAdapter: You must supply a resource ID for a TextView,但是我在 adapter 中是添加了 单个item的 xml 布局的嘛,有谁知道这个怎么回事吗?
问题解答
回答1:需要指定字符串填充到那个控件,使用这个构造函数
ArrayAdapter (Context context, int resource, int textViewResourceId, List<T> objects)
代码如下:
ArrayAdapter adapter1 = new ArrayAdapter<>(this,R.layout.array_item,R.id.textView,arr1);回答2:
用你那个构造也可以,不过R.layout.array_item必须以textView作为根节点
回答3:使用Listview时,如果想使用自定义布局,那么需要写适配器Adapter,除非你的自定义布局里只含有一个Textview