我有一个列表,其中一列使用了适配器,并且有效。现在我试图把它分成两列,我得到例外。
我正在按照这个看起来最简单的教程:http://www.heikkitoivonen.net/blog/2009/02/15/multicolumn-listview-in-android/
我有一个Java活动,我声明如下:
public class SeeAllQuestionsActivity extends ListActivity
这里有一些代码:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
FlurryAgent.onStartSession(this, "8CA5LTZ5M73EG8R35SXG");
setContentView(R.layout.all_question_page);
...
这是all_question_page 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:padding="3px"
>
<include android:id="@+id/header"
layout="@layout/header"
android:layout_height="wrap_content"
android:layout_width="fill_parent"/>
<TextView
android:id="@+id/loading_questions"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Some prompt text."
android:textSize="10sp"
/>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@+id/label"
android:textSize="20px" >
</ListView>
</LinearLayout>
顺便说一下,如果有人可以向我解释两个语法之间的差异,以引用列表ID,那就太棒了:
android:id="@android:id/list"
android:id="@+id/list"
仅供参考,这些都不适合我:)
这是questions_list.xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:paddingTop="4dip"
android:paddingBottom="6dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView android:id="@+id/TRAIN_CELL"
android:layout_width="50dip"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/FROM_CELL"
android:layout_width="70dip"
android:layout_height="wrap_content" android:layout_weight="1"/>
<TextView android:id="@+id/TO_CELL"
android:layout_width="60dip"
android:layout_height="wrap_content" android:layout_weight="1"/>
</LinearLayout>
当我在模拟器上运行它时,它因运行时异常而崩溃,抱怨此行:setContentView(R.layout.all_question_page);
,错误是:
java.lang.RuntimeException:
Your content must have a ListView whose id attribute is 'android.R.id.list'
请帮助,我很困难
谢谢!
答案 0 :(得分:1)
差别似乎是前者是你需要使用的,以便使用ListActivity,如果你不打算使用ListActivity,后者就是你要使用的,而只是一个普通的Activity 。所以你必须坚持下去。 (注意:我从来没有亲自使用过ListActivity,所以我不能完全保证这一点)
android:id="@android:id/list"
我还建议从ListView中删除这些行:
android:text="@+id/label"
android:textSize="20px"
text和textSize都不是ListView的有效属性。对于任何小部件,文本是我的有效属性,我认为您不希望将文本设置为"@+id/label"
之类的内容。如果您尝试从strings.xml文件中引用字符串,则需要使用"@string/label"
。引用类似于文本的id将在文本中放入一些对用户没有任何意义的十六进制代码(如果它完全有效)。
有可能删除这些可能会解决您的麻烦,如果是这样我的猜测是将文本设置为另一个ID会让人误以为您的列表没有ID list
如果这不能解决您的问题,我建议切换到普通的Activity而不是ListActivity,并通过findViewById()
获取对ListView的引用,就像它们在您链接的示例中一样。