我正在尝试从数组加载项目列表...我得到运行时错误
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>
答案 0 :(得分:1)
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"/>