@ + 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
类。
这里是文章的来源 。
还有我脑海中的问题是:
- 我们应该扩展
ListActivity
吗? 也许我想要一个也包含其他视图的活动。 - 我们使用
@+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是显示可滚动项目列表的视图组。 列表项自动插入到列表中,使用从数据源或数据库查询等来源提取内容的适配器,并将每个项目结果转换为放置在列表中的视图。