如何将Array中的项列表加载到ListView中

时间:2012-02-22 16:28:48

标签: android android-listview android-mediaplayer

我正在尝试从数组加载项目列表...我得到运行时错误

02-22 11:22:51.042:E / AndroidRuntime(1460):引起:java.lang.RuntimeException:您的内容必须有一个ListView,其id属性为'android.R.id.list'

我的R.java文件

public final class R {
    public static final class attr {
    }
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
        public static final int icon=0x7f020001;
    }
    public static final class id {
        public static final int mylist=0x7f050000;
        public static final int next=0x7f050005;
        public static final int play=0x7f050004;
        public static final int prev=0x7f050003;
        public static final int seekbar=0x7f050002;
        public static final int selectedfile=0x7f050001;
        public static final int text1=0x7f050006;
    }
    public static final class layout {
        public static final int audiolist=0x7f030000;
        public static final int song_item=0x7f030001;
        public static final int songlist=0x7f030002;
    }
    public static final class string {
        public static final int app_name=0x7f040000;
    }
}

我的代码:

@Override
public void onCreate(Bundle icicle) {
    try {
        super.onCreate(icicle);
      setContentView(R.layout.audiolist);

        ListView listView = (ListView) findViewById(R.id.mylist);
    String[] values = new String[] { "Android", "iPhone", "WindowsMobile"};
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values);
listView.setAdapter(spinnerArrayAdapter);

    } catch (NullPointerException e) {
        Log.v(getString(R.string.app_name), e.getMessage());
    }
}

布局:audiolist

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

    <ListView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         android:id="@+id/mylist"
        android:layout_weight="1.0"/>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/screen_background_light"
        android:padding="10dip">

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/selectedfile"
            android:text="Not file selected"
            android:textColor="@android:color/black"
            android:gravity="center_horizontal"
            android:singleLine="true"
            android:ellipsize="middle"/>

        <SeekBar
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/seekbar"
            android:max="100"
            android:paddingBottom="10dip"/>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:background="@android:drawable/screen_background_light">

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/prev"
                android:src="@android:drawable/ic_media_previous"/>

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/play"
                android:src="@android:drawable/ic_media_play"/>

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/next"
                android:src="@android:drawable/ic_media_next"/>

        </LinearLayout>
    </LinearLayout>

</LinearLayout>

2 个答案:

答案 0 :(得分:1)

来自reference

  

ListActivity的默认布局由单个布局组成,   屏幕中央的全屏列表。但是,如果你愿意,   您可以通过设置自己的视图布局来自定义屏幕布局   在onCreate()中使用setContentView()。要做到这一点,你自己的观点必须   包含一个ID为“@android:id / list”的ListView对象(或列出if   它在代码中)

您必须将listview'的ID更改为默认值,或者您需要使用setContentView(...)

更新:代码示例

你可以查看the tutorial of Vogella,这是一个很好的一步一步显示你。你不能失败。

更新2 可能的解决方案 我的最后一个猜测是您的活动扩展ListActivity,因此构建器正在寻找默认列表作为布局。如果是这样,请使用简单的Activity,并查看此问题的答案:How can I implement a ListView without ListActivity? (use only Activity)

祝你好运

答案 1 :(得分:-1)

当您扩展ListActivity并创建listView时,ListView的id应该只是“list”而不是mylist。

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