我在这里有一个非常基本的问题: 我正在使用ArrayAdapter创建一个android列表,它将数据从字符串数组填充到listView:
final String[] listData={"Red", "Green", "Blue",
"Purple", "Orange"};
final ListView lv=(ListView)findViewById(R.id.listView1);
final ArrayAdapter<String> aa=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listData);
lv.setAdapter(aa);
上面的代码工作正常。我的问题是,为什么我们不能使用以下适配器实现:
final ArrayAdapter<String> aa=new ArrayAdapter<String>(this, R.id.listView1, listData);
listView1是activity_main.xml中我的ListView的id。我尝试使用此实现但应用程序崩溃了。 我在这里错过了什么?对不起,如果这个问题看起来很傻,因为我还在学习如何编程android!谢谢你的帮助!
答案 0 :(得分:2)
你有
ArrayAdapter<String> aa=new ArrayAdapter<String>(this, R.id.listView1, listData);
ArrayAdapter
构造函数
查看公众onstructors @
http://developer.android.com/reference/android/widget/ArrayAdapter.html
ArrayAdapter(Context context, int resource, T[] objects)
第一个参数是上下文
第二个参数是资源
第三个参数是对象数组
通过上面的代码ArrayAdapter<String> aa=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listData);
这里你使用的是一个内置的布局形式的android框架工作
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
/>
ArrayAdapter(Context context, int resource, int textViewResourceId, T[] objects)
第二个参数是一个资源,它应该是一个带有文本视图的布局
第三个参数是textview id
答案 1 :(得分:1)
listView1是activity_main.xml中我的ListView的id。
构造函数期望TextView
的id在哪里放置您通过listData提供的文本
答案 2 :(得分:1)
您要使用非自定义ArrayAdapter
的自定义布局。 Android基本上不知道你的布局项目是什么,比如TextView
。为此,您有另一个构造函数,您可以在其中指定TextView
的ID:
final ArrayAdapter<String> aa=new ArrayAdapter<String>(this, R.id.listView1, R.id.your_textview_id, listData);
答案 3 :(得分:0)
在ArrayAdapter中(Context context,int resource,T [] objects)构造函数第二个参数是要膨胀的布局资源,所以你必须传递R.layout而不是R.id作为参数。在你的布局中应该是id @android的TextView:id / text,以便android自动设置你的字符串。如果你想提供你的id,那么使用ArrayAdapter(Context context,int resource,int textViewResourceId,T [] objects);