Android:强制使用ListView

时间:2011-10-08 11:33:49

标签: java android

我想制作一个菜单,其中包含4个不同的LinearLayouts。 顶部有一个标题,第二个有描述,第三个有3个ImageViews,有事件onClick,第四个有一个Button也有onClick事件。

不知何故,android不喜欢它,并强迫我使用ListView。

异常消息是: java.lang.RuntimeException:您的内容必须具有一个ListView,其id属性为'android.R.id.list'

我已经尝试过使用ListView,但它并没有像我预期的那样工作。例如,第3个布局有3个按钮,事件不适用于每个ImageView,而是放在ListView的行上。

可以做些什么?

显示我的布局xml文件:

options.xml

<?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" android:id="@+id/optionsLayout"
    android:background="@drawable/bg" android:layout_gravity="center">

    <include  layout="@layout/options_layout1" android:id="@+id/optionsLayout1" />
    <include  layout="@layout/options_layout2" android:id="@+id/optionsLayout2" />
    <include  layout="@layout/options_layout3" android:id="@+id/optionsLayout3" />
    <include  layout="@layout/options_layout4" android:id="@+id/optionsLayout4" />

</LinearLayout>

options_layout1.xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:id="@+id/optionsTitleLayout"
    android:background="@drawable/options" 
    android:layout_gravity="center" />

options_layout2.xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:id="@+id/chooseThemeTitleLayout"
    android:background="@drawable/choose_theme" android:layout_gravity="center" 
    android:layout_marginTop="70dip" />

options_layout3.xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:id="@+id/optionButtonsLayout" 
    android:layout_gravity="center" android:layout_marginTop="10dip" >
    <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:id="@+id/theme1Btn"
        android:background="@drawable/theme1_off" android:layout_marginLeft="10dip" 
        android:layout_marginRight="10dip" />
    <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_centerInParent="true"
        android:id="@+id/theme2Btn" android:background="@drawable/theme2_off" 
        android:layout_marginLeft="10dip" android:layout_marginRight="10dip" />
    <ImageView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_toRightOf="@id/theme2Btn"
        android:id="@+id/theme3Btn" android:background="@drawable/theme3_off" 
        android:layout_marginLeft="10dip" android:layout_marginRight="10dip"/>
</LinearLayout>

options_layout4.xml

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:id="@+id/saveButtonLayout"
    android:layout_gravity="center" >
    <Button android:id="@+id/saveBtn" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_centerHorizontal="true"
        android:text="Save" android:layout_marginTop="10dip"/>
</LinearLayout>

谢谢, 亨利。

3 个答案:

答案 0 :(得分:2)

问题不在于xml,问题出在代码中。您使用特定的类,该类需要ID R.id.list在您的布局中。您的Activity可能仍然扩展了ListActivity?此活动需要一个R.id.list布局。

答案 1 :(得分:1)

您使用的是ListActivity吗?如果是这样,只需将其替换为Activity

答案 2 :(得分:1)

If you extends your activity as ListActivity ,you have to listview with android:id="@android:id/list"

otherwise extends your activity as Activity and and get listview :
Listview list = (Listview) findViewById(R.id.mylist);