0

我已经编写了将内容下载到 sdcard 上的代码,现在我正在尝试列出下载的内容.xml.当我这样做时,我收到异常,因为 java.lang.IllegalStateException:ArrayAdapter 要求资源 ID 是 TextView。

我的主要课程是

public class Downloadlist extends ListActivity {
    private List<String> item = null;
    private List<String> path = null;
    private String root="/sdcard";
    private TextView myPath;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mydownload);
        myPath = (TextView)findViewById(R.id.path);
        getDir(root);
    }
    private void getDir(String dirPath)
    {
        myPath.setText("Location: " + dirPath);
        item = new ArrayList<String>();
        path = new ArrayList<String>();
        File f = new File(dirPath);
        File[] files = f.listFiles();
        if(!dirPath.equals(root))
        {
            item.add(root);
            path.add(root);
            item.add("../");
            path.add(f.getParent());
        }
        for(int i=0; i < files.length; i++)
        {
            File file = files[i];
            path.add(file.getPath());
            if(file.isDirectory())
                item.add(file.getName() + "/");
            else
                item.add(file.getName());
        }
        Log.d("itemssssssss", item.toString());
        ArrayAdapter<String> fileList =
                new ArrayAdapter<String>(this, R.layout.rowmydownload, item);
        setListAdapter(fileList);
    }
} 

我的xml是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFFFF"
    android:orientation="vertical" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:background="#A9D0F5"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/image1"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="8dp"
            android:src="@drawable/untitled" />

        <TextView
            android:id="@+id/txt1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="65dp"
            android:layout_toRightOf="@+id/image1"
            android:gravity="center"
            android:text="MY Downloads"
            android:textColor="#000000"
            android:textSize="26px"
            android:textStyle="bold" />
    </RelativeLayout>

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/path"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

        <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@android:id/empty"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="No Data" />
    </LinearLayout>

</LinearLayout>

我的 row.xml 是

<?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"
    android:background="#FFFFFF"
    android:orientation="vertical" >

    <TextView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/rowtext"
        android:layout_width="fill_parent"
        android:layout_height="25px"
        android:textSize="23sp" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="50dp"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/course"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Sales Training"
            android:textColor="#000000"
            android:textStyle="bold" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_marginTop="20dp"
        android:orientation="horizontal" >

        <Button
            android:layout_width="60dp"
            android:layout_height="30dp"
            android:layout_marginLeft="90dp"
            android:background="#81BEF7"
            android:text="View" />
    </LinearLayout>

</LinearLayout>
4

1 回答 1

0

使用 ArrayAdapter 时,row.xml 的第一个元素应该是 TextView,而不是 LinearLayout。

如果要在行中使用多个元素,则不应使用 ArrayAdapter,而应使用自定义适配器。参见例如这个 android 开发者示例

于 2012-06-05T13:10:56.203 回答