I am wondering what’s the difference between @+id/android:list and @+id/list. I know the last one which is a regular id assignment but the first looks different. What makes it special?
Where I saw it:
I was studying on ListView, ListAdapter and things like that and the author define the ListView in layout xml file as below :
<?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>
and also let me mention @+id/android:empty id as well.
And he also extends ListActivity class.
Here is the source of the article.
And also what’s in my mind as questions are :
- Should we extend
ListActivity? Maybe I want an Activity which also contains other Views. - We use
@+id/android:listjust because we extendListActivityor we can use the same convention if we extendActivity?
Thanks.
Resource IDs in Android are specific to a package (which is good, or else you’d have lots of conflicts if your app is dealing with several packages at the same time).
@+id/listwill create a resource ID in your app (=your package) with the name “list” and give it a unique ID. In code, that would beR.id.list.@android:id/listwill use the ID “list” from the package android (which, in code, would beandroid.R.id.list.EDIT: Need to add the corrections David Hedlund pointed out: The proper reference would be
@android:id/list. Also,+indicates you’re defining a new ID – you obviously don’t need that when you’re referencing something that was defined in the Android API.