@ + id / android:list和@ + id / list有什么区别?

我想知道@+id/android:list@+id/list什么区别。 我知道最后一个是定期编号,但第一个看起来不一样。 是什么使它特别?

我在那里看到:我正在研究ListView,ListAdapter和类似的东西,作者在layout xml文件中定义了ListView,如下所示:

 <?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:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <TextView android:id="@+id/android:empty" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/main_no_items"/> </LinearLayout> 

也让我提及@+id/android:empty id。

而且他还扩展了ListActivity类。

这里是文章的来源 。

还有我脑海中的问题是:

  1. 我们应该扩展ListActivity吗? 也许我想要一个也包含其他视图的活动。
  2. 我们使用@+id/android:list只是因为我们扩展ListActivity或者如果我们扩展Activity我们可以使用相同的约定?

谢谢。

Android中的资源ID是特定于一个包的(这很好,否则如果你的应用同时处理几个包的话你会有很多的冲突)。

@+id/list将在您的应用程序(=您的软件包)中创build一个名称为“list”的资源ID并为其提供一个唯一的ID。 在代码中,这将是R.id.list

@android:id/list将使用android包中的ID“list”(在代码中,它将是android.R.id.list

编辑:需要添加更正David Hedlund指出:适当的引用将是@android:id/list 。 另外, +表示你正在定义一个新的ID–当你引用在Android API中定义的东西时,你显然不需要这个ID。

我认为你发布的示例代码有一个错字,所以它应该是@android:id/list (不带+)。 从ListActivity javadoc :

你自己的视图必须包含一个ID为“@android:id / list”的ListView对象

@android:id/list特定于ListActivity,因此,如果将ListView添加到其他types的Activity中,则不需要它。 如果您希望用户不仅仅是查看列表,您应该扩展ListActivity。 例如,您可以重写ListActivity.onListItemClick来响应列表中某个项目的点击。

同样, @id/android:empty (再次,没有+)是ListActivity的特例。 这使您可以指定一个替代视图,当列表为空时应显示该视图。 该列表填充时,该视图将不会显示。

在android中,

在XML中:@ [package:] layout / filename

喜欢

 android:id="@+id/android:list" 

这是引用listFragment或listActivity时引用列表视图的标准方式

所以文件名是android:list是对ListView的引用。

导航到res/values/ids.xml

你会发现<item type="id" name="list" />

ListView是显示可滚动项目列表的视图组。 列表项自动插入到列表中,使用从数据源或数据库查询等来源提取内容的适配器,并将每个项目结果转换为放置在列表中的视图。