Java @+;id/android:list和@+;身份证/名单

Java @+;id/android:list和@+;身份证/名单,java,android,listview,Java,Android,Listview,我想知道@+id/android:list和@+id/list之间有什么区别。我知道最后一个是常规id分配,但第一个看起来不同。它有什么特别之处 我看到它的地方: 我在研究ListView、ListAdapter和类似的东西,作者在布局xml文件中定义ListView如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/

我想知道
@+id/android:list
@+id/list
之间有什么区别。我知道最后一个是常规id分配,但第一个看起来不同。它有什么特别之处

我看到它的地方: 我在研究ListView、ListAdapter和类似的东西,作者在布局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

这是你的电话号码

以及我心中的问题是:

  • 我们是否应该扩展
    列表活动
    ?也许我想要一个包含其他视图的活动
  • 我们使用
    @+id/android:list
    仅仅是因为我们扩展了
    ListActivity
    ,或者如果我们扩展了
    Activity
    ,我们可以使用相同的约定

  • 谢谢。

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

    @+id/list
    将在你的应用程序(=你的包)中创建一个名为“list”的资源id,并给它一个唯一的id。在code中,这将是
    R.id.list

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


    编辑:需要添加更正David Hedlund指出:正确的引用应该是
    @android:id/list
    。此外,
    +
    表示您正在定义一个新的id-当您引用android API中定义的内容时,显然不需要它。

    我认为您发布的示例代码有一个输入错误,因此应该d是
    @android:id/list
    (不带+)。来自:

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

    @android:id/list
    是特定于ListActivity的,因此如果要将ListView添加到任何其他类型的活动中,则不需要它。如果希望用户执行的操作多于查看列表,则应扩展ListActivity。例如,您可以覆盖
    ListActivity。onListItemClick
    以响应对列表中某个项目的单击

    类似地,
    @id/android:empty
    (同样,不带+)是ListActivity的特例。这允许您指定列表为空时应显示的替代视图。填充列表时将不显示该视图。

    在android中

    在XML中:@[package:]布局/文件名

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

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

    导航到
    res/values/ids.xml

    您将发现


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

    这是对正在发生的事情的正确描述,但作为elevine指出,语法是
    @android:id/list
    +
    意味着在
    R
    中添加了一些东西,而省略加号仅仅意味着引用了一些已经定义好的东西。它应该是
    @+id/android:list
    还是
    @id/android:list
    ?谢谢大卫,我从问题中复制了它,没有考虑@Brave:
    @id/android:list
    ,因为android API已经定义了
    list
    。字符串开头的at符号(@)表示XML解析器应该解析和扩展id字符串的其余部分,并将其标识为id资源。加号(+)意味着这是一个新的资源名称,必须创建并添加到我们的资源中(在R.java文件中)。Android框架提供了许多其他ID资源。引用Android资源ID时,您不需要加号,但必须添加Android包命名空间。*来自:
    android:id="@+id/android:list"