2014-03-06 13 views
0

我正在使用DrawerLayout進行導航,其中包括由存儲在XML中的字符串填充的ListView。初始化ListView控件如下所示:使用適配器和ThemedContext將ListView轉換爲帶有樣式的XML ListView

mDrawerListView.setAdapter(new ArrayAdapter<String>(
    getActionBar().getThemedContext(), 
    android.R.layout.simple_list_item_activated_1, 
    android.R.id.text1, 
    getResources().getStringArray(R.array.navigation_section_titles) 
)); 

轉換該視圖XML目前看起來如下:

<ListView 
    android:id="@+id/navigation_drawer" 
    android:background="#cccc" 
    android:entries="@array/navigation_section_titles" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:dividerHeight="0dp" 
    android:layout_gravity="start" 
    android:layout_height="match_parent" 
    android:layout_width="@dimen/navigation_drawer_width" 
    tools:layout="@layout/simple_list_item_activated_1"/> 

ListView控件的外觀是不是兩種形式之間是一致的。這需要使用android資源設置適配器,如第一個塊所示。是否可以設置適配器而不必重新定義要在列表中使用的字符串列表?更好的是,是否可以定義這種樣式,並完全在XML中列出內容?

+0

什麼「兩種形式」? – PearsonArtPhoto

回答

1

ListView不能完全定義在XML中。有兩個關鍵部分,但是,可以用XML定義,如果您願意,還可以添加頁腳和標題。所有這些都可以在XML中定義,但它們之間的關係必須在代碼中定義。理論上這些可以結合起來,實際上在ListPreferences中是這樣做的,但標準的Android上下文不允許這樣做。

所以,可以在XML中定義的4個部分分別是:

  1. ListView - 包含位置,大小,分頻器和背景
  2. 適配器查看 - 顯示了單行看起來像
  3. 報頭 - 這是一個自定義您的列表中第一行
  4. Footer-這是你的列表的自定義最後一行

所有這些,無論好壞,都在運行時連接。適配器控制它們之間的流動。您擁有的代碼是可以完成的最好的代碼,不幸的是,XML僅僅不足以完全定義XML中的ListView。