0

SDカードにコンテンツをダウンロードするコードを書きましたが、ダウンロードしたコンテンツをリストしようとしています。そのためのコードも書きましたが、正常に動作していますが、rowmydownloadに書いているリストのすべてのアイテムに1つのビューボタンが必要です.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 の最初の要素は LinearLayout ではなく、TextView にする必要があります。

行で複数の要素を使用する場合は、ArrayAdapter ではなく、カスタム アダプターを使用する必要があります。たとえば、このアンドロイド開発者の例を参照してください

于 2012-06-05T13:10:56.203 に答える