我试图填充一个文件列表,并使用一个自定义的arrayadapter,以便每个列表项包含多个视图。我用来填充列表的代码是:

File home = MEDIA;
    int numFiles = home.listFiles().length;
    if(numFiles >0) {
        ArrayList<FileInfo> fileData = new ArrayList<FileInfo>(numFiles);

        for (File file : home.listFiles()) {
            FileInfo data = new FileInfo();
            data.title = file.getName();
            data.desc = file.getAbsolutePath();

            fileData.add(data);
        }

        FileAdapter fileAdapter = new FileAdapter(this, R.layout.file_item, fileData);
        setListAdapter(fileAdapter);

    }

主xml文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView android:id="@+id/android:list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:drawSelectorOnTop="false"/>

    <TextView android:id="@+id/android:empty"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="No files found on SD Card."/>
</LinearLayout>

文件项XML文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android/com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView android:id="@+id/file_item_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/file_item_desc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

每当我运行这个并试图填充列表时,它就会抛出一个异常并崩溃应用程序,抛出错误
E/AndroidRuntime( 5320): FATAL EXCEPTION: main
E/AndroidRuntime( 5320): java.lang.RuntimeException: Binary XML file line #6: You must supply a layout_width attribute.
E/AndroidRuntime( 5320):    at android.content.res.TypedArray.getLayoutDimension(TypedArray.java:491)
E/AndroidRuntime( 5320):    at android.view.ViewGroup$LayoutParams.setBaseAttributes(ViewGroup.java:3600)
E/AndroidRuntime( 5320):    at android.view.ViewGroup$MarginLayoutParams.<init>(ViewGroup.java:3680)

如果我在文件项xml文件中添加了额外的linearlayout或其他内容,则缺少layout width的行将更改,这使我认为它确实认为文件项xml文件中的第一个textview缺少layout width属性,但由于已经有一个属性,我不知道它希望我做什么。

最佳答案

我发现了问题-如果在xmlns声明中有错别字,就会发生这种情况。
我有:

xmlns:android="http://schemas.android/com/apk/res/android"

我应该得到的是:
xmlns:android="http://schemas.android.com/apk/res/android"

不管出于什么原因,这在堆栈跟踪中显示为丢失的布局宽度。

10-07 19:33
查看更多