2010-12-04 41 views
18

我想知道@+id/android:list@+id/list有什麼區別。我知道最後一個是定期編號分配,但第一個看起來不同。什麼使它特別?@ + id/android:list和@ + id/list有什麼區別

當我看到它: 我上的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類。

這裏是source of the article

而且也什麼在我的腦際的問題是:

  1. 我們應該擴大ListActivity?也許我想要一個也包含其他視圖的活動。
  2. 僅僅因爲我們擴展ListActivity而使用@+id/android:list,或者如果我們擴展Activity,我們可以使用相同的約定?

謝謝。

回答

39

Android中的資源ID特定於包(這很好,否則如果您的應用程序同時處理多個包,會產生很多衝突)。

@+id/list將在您的應用程序(=您的包裹)中創建名稱爲「list」的資源ID併爲其提供唯一的ID。在代碼中,這將是R.id.list

@android:id/list將使用ID「列表」,從包裝機器人(其中,在代碼中,將android.R.id.list

編輯:需要補充更正大衛Hedlund的指出:正確的提法是@android:id/list還,+表示你正在定義一個新的ID--當你參考Android API中定義的東西時,你顯然不需要這樣做。

+1

這是對正在發生的事情的正確描述,但正如高度指出的,語法是`@android:id/list`。 `+'意味着給`R`增加一些東西,而省略加號只意味着引用已經定義的東西。 – 2010-12-04 20:26:19

+0

應該是`@ + id/android:list`還是`@id/android:list`? – Tarik 2010-12-04 20:26:36

11

我認爲你發佈的示例代碼有一個錯字,所以它應該是@android:id/list(不含+)。從ListActivity javadoc

自己的視圖必須包含一個ListView對象與ID 「@android:ID /列表」

@android:id/list是特定於ListActivity,所以你不需要它,如果要添加一個ListView進入任何其他類型的活動。如果您希望用戶不僅僅查看列表,您應該擴展ListActivity。例如,您可以覆蓋ListActivity.onListItemClick以響應列表中項目的點擊。

同樣,@id/android:empty(再次,沒有+)是ListActivity的特例。這使您可以指定當列表爲空時應顯示的替代視圖。該列表填充時,該視圖將不會顯示。

在機器人
0

在XML:@ [包:]佈局/文件名

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

這是指一個列表視圖時的標準方法引用listFragment或listActivity

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

導航到res/values/ids.xml

你會發現<item type="id" name="list" />

的ListView是顯示滾動項目列表的視圖組。列表項自動插入列表使用適配器從數據源或數據庫查詢等來源提取內容,並將每個項目結果轉換爲放入列表中的視圖。