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"