Android 具有包含LinearLayout的行的ListView
我正在尝试使用ListView实现一个列表,它包含使用LinearLayout构建的行。此线性布局由复选框和文本视图组成。该行的布局名为tasks\u list\u row.xml:Android 具有包含LinearLayout的行的ListView,android,Android,我正在尝试使用ListView实现一个列表,它包含使用LinearLayout构建的行。此线性布局由复选框和文本视图组成。该行的布局名为tasks\u list\u row.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<CheckBox android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
然后,从我的代码中,我以以下方式初始化列表:
final String[] items_task = new String[] { "one",
"two",
"three" };
setListAdapter(new ArrayAdapter<String>(this, R.layout.tasks_list_row, items_task));
setListAdapter(new ArrayAdapter<String>(this, R.id.text1, R.layout.tasks_list_row, items_task));
final String[]items\u task=新字符串[]{“一”,
“两个”,
“三”};
setListAdapter(新的ArrayAdapter(this,R.layout.tasks\u list\u row,items\u task));
但是我得到了一个错误:
ArrayAdapter-必须为TextView提供资源ID
然后,我尝试通过以下方式指定TextView id:
final String[] items_task = new String[] { "one",
"two",
"three" };
setListAdapter(new ArrayAdapter<String>(this, R.layout.tasks_list_row, items_task));
setListAdapter(new ArrayAdapter<String>(this, R.id.text1, R.layout.tasks_list_row, items_task));
setListAdapter(新的ArrayAdapter(这个,R.id.text1,R.layout.tasks\u list\u行,items\u task));
但是我得到一个ResourceNotFound错误(R.id.text1存在于R.java文件中)
我该怎么办?在这种情况下,您需要使用android.R.id.text1,因为您正在引用内置的android id(@android:id是线索)
setListAdapter(新的ArrayAdapter(这个,R.layout.tasks\u list\u行,android.R.id.text1,items\u任务));
这样做没有多大好处,除非您使用内置布局,例如android.R.layout.two_line_list_item在这种情况下,您需要使用android.R.id.text1,因为您正在引用内置的android id(@android:id是线索)
setListAdapter(新的ArrayAdapter(这个,R.layout.tasks\u list\u行,android.R.id.text1,items\u任务));
这样做没有多大好处,除非您使用内置布局,例如android.R.layout.two_line_list_item尝试使用android默认的textview id
android.R.id.text1
尝试使用android默认的textview idandroid.R.id.text1
为您的线性布局android:id=“@android:id/tasks\u list\u row”提供一个id,并使用此id代替
setListAdapter(new ArrayAdapter<String>(this, R.id.tasks_list_row, items_task));
setListAdapter(新的ArrayAdapter(这个,R.id.tasks\u list\u行,items\u task));
每个项目都将具有您指定的xml。您可以改为使用CheckedTextView,它将
文本视图
与复选框
相结合,为您的线性布局android:id=“@android:id/tasks\u list\u row”提供一个id,并改为使用该id
setListAdapter(new ArrayAdapter<String>(this, R.id.tasks_list_row, items_task));
setListAdapter(新的ArrayAdapter(这个,R.id.tasks\u list\u行,items\u task));
每个项目都将具有您指定的xml。您可以改为使用CheckedTextView,它将
文本视图
与复选框
结合起来我同意@David的观点。我认为没有理由在自己的布局中使用@android:id/text1作为文本字段的id。如果您只使用@+id/text1,那么您的代码应该可以工作,并且id在您的项目空间中。是的,我认为如果您坚持使用自己的标识符,那么更容易理解。在这种情况下,您通常可以使用更具描述性的名称,如标题或标题,而不是text1。我这样做了,我得到了以下错误:android.content.res.Resources$NotFoundException:File from xml type layout resource ID#0x1020014(该ID在我的R.java文件中不存在)尝试在布局xml中使用android:ID=“@+ID/text1”,然后R.id.text1作为ArrayAdapter构造函数的第二个参数。是的,我以前尝试过它,但它抛出了一个类似的错误:android.content.res.Resources$NotFoundException:Resource id#0x7f050004 type#0x12无效我同意@David的说法。我认为没有理由在自己的布局中使用@android:id/text1作为文本字段的id。如果您只使用@+id/text1,那么您的代码应该可以工作,并且id在您的项目空间中。是的,我认为如果您坚持使用自己的标识符,那么更容易理解。在这种情况下,您通常可以使用更具描述性的名称,如标题或标题,而不是text1。我这样做了,我得到了以下错误:android.content.res.Resources$NotFoundException:File from xml type layout resource ID#0x1020014(该ID在我的R.java文件中不存在)尝试在布局xml中使用android:ID=“@+ID/text1”,然后R.id.text1作为ArrayAdapter构造函数的第二个参数。是,我以前尝试过它,但它抛出了类似的错误:android.content.res.Resources$NotFoundException:Resource ID#0x7f050004 type#0x12无效roid.content.res.Resources$NotFoundException:Resource ID#0x7f050004 type#0x12无效roid.content.res.Resources$NotFoundException:Resource ID#0x7f050004 type#0x12无效