2012-03-19 114 views
0

我在列表視圖中有一個現在的設計來顯示程序列表。但是,如果程序是一系列程序,程序必須分組爲單個實體,並且在單擊該系列時應將程序填充到該實體中。 截至目前,我有一個具有系列ID,程序名稱等詳細信息的數組列表。具有相同系列ID的程序應該組合爲一個系列,其餘應顯示爲正常項目。點擊該系列時,所有具有點擊系列的seriesID的節目都應顯示在點擊的項目下。 任何洞察到使用可擴展列表視圖相同是非常有用的:)可擴展列表視圖設計

回答

0

是的,使用ExpandableListView。

您將需要實現自定義的ExpandableListAdapter。這非常簡單。代替單個列表元素,您必須爲子組和實現方法(getChildCount(),getGroupCount()等)以及顯示組和子組之間關係的方法(例如getChild(int groupPosition, int childPosition))。

如果你正確地建模你的數據,它應該很容易實現。在你的情況下,你希望有一個包含一個或多個程序對象(子程序)的Series對象(組)。

對你而言,一個絆腳石可能是某些程序不在一個系列中。我不知道有一種方法可以在展開列表中混合分組和非分組項目。您可能需要創建一個「非分組程序」組。

在這種情況下,你可以實現你自己的「分組列表視圖」。它不會太強悍。你的對象模型是什麼樣子,

class ListItem 
    class ProgramItem extends ListItem 
    SeriesItem extends ListItem 

是ProgramItem,你有方法一樣,

getSeries() 

,可以返回null,這是你怎麼知道它是包含在特定系列,還是不包含。現在是整潔的部分。您可以比較ProgramItem和SeriesItem,並對包含它們的列表進行排序。在正確的序列下排序程序的邏輯很好地封裝在compareTo()的實現中。

然後在getView()中,您執行一個instanceof並相應地呈現組或子視圖。如果ProgramItem被包含,你可以縮進它,或者其他什麼。

+0

是的,即使我不知道如何模擬分組程序和非分組程序的數據 – 2012-03-19 06:26:35

0

要使用可擴展列表視圖需要創建適配器類如要顯示擴展列表視圖在此創建一個類BaseExpandableListAdapter

1.帶你必須使用重載函數 1.getchildview 2.getGroupview

1.getChildCount和getGroupcount回報父母和孩子的長度

看你有計劃和一系列 創建兩個數組列表中的程序和一個系列 一個哈希映射網絡第二特定節目是否是具有串聯或不

然後在鹼擴展列表適配器

在getGroupCount 1.帶 返回節目的長度的ArrayList 2.具有在getchildernCount的長度 返回的長度方案[位置]。長度(如果該程序有系列使用哈希映射)