2011-10-21 47 views
2

我正在尋找關於如何模塊化我的代碼的指導。我有一個活動和一個listAdapter,他們變得相當複雜。我不確定哪些代碼應該在哪裏以及在這兩個類中彼此應該具有多少知識。您如何決定是否將代碼放入活動或其適配器中?你用什麼模式讓這些課程儘可能精益?這個代碼應該在哪裏 - 在我的Activity或我的適配器中?

回答

2

你的描述過於籠統,所以我不能給你一個確切的答案(對於解釋爲什麼他們變得越來越大,額外的代碼有什麼好處)。

但是一般來說,只要想想每個班級應該做什麼。 「活動」(就像我看到的那樣)是一個主控制器,它「知道所有人」,並且將其他組件(ListView與列表適配器)連接在一起。列表適配器的目的僅僅是將數據映射到視圖。如果他們變得越來越大,提取新的(實用)類。例如,假設ListAdapter格式時間戳中的很大一部分代碼(例如,將時間戳記作爲長整型值,並基於當前時間創建一個像「2小時前」的字符串)。然後創建一個名爲TimeFormat的新實用程序類(帶有一個構造函數,它需要一個上下文,稍後需要它來獲取字符串資源)是有意義的。然後ListAdapter將創建這個類的一個實例。

另一個例子是數據保存。在這種情況下,您可以創建一個名爲「Model」或「Document」的類(再次,構造函數採用「Context」實例)。它將負責(例如)通過parsin XML文件加載數據,並通過生成XML文件來保存數據。在這種情況下,這個類將被活動實例化。

另請注意,ListAdapter應該真的做它應該做的事情:基於數據創建/設置視圖。它不應該依賴於其他視圖(在其他視圖中,它應該可以在任何佈局文件中使用任何ListView)。因此,如果您有「findViewById」調用,該調用訪問ListView(或ListView本身)之外的視圖,那麼應將該代碼移至該活動。另外,如果有疑問,你可以嘗試找到一個相對成熟的開源應用程序,並做類似的事情(並且看看它是如何解決問題的)。

1

adapater documentation在機器人

適配器對象充當一個AdapterView和該視圖的基礎數據之間的橋樑。適配器提供對數據項的訪問。適配器還負責爲數據集中的每個項目製作視圖。

因此,如果您的代碼與獲取數據來顯示或創建視圖有關,那麼它就在適配器中。一切都在活動或其他地方。如果您花費大量代碼檢索要顯示的信息,請考慮使用某種AsyncTaskLoader類。請注意,使用android compatibility package可以從小於3.0的API級別訪問加載器類。

相關問題