2012-09-12 32 views
0

我有一個關於ListActivities的問題,放入一個希望更清晰的例子。 ;)android設計模式 - 只有一個項目的列表 - >顯示項目而不是列表

我的應用程序有一個TitleListActivity,它顯示特定作者的已發佈標題。該列表可能包含一個或多個標題,具體取決於作者。當列表中只有一個標題時,我想立即爲特定標題啓動TitleViewActivity,而不是使用一個標題顯示無聊列表。我假設很普通,到目前爲止還沒有找到任何解釋。

簡單的方法是在調用TitleListActivity之前檢查該作者有多少個標題並開始相應的活動。由於TitleListActivity調用可以從應用程序的不同部分發生,因此我希望集中確定要調用哪個Activity的邏輯。

我的問題是實現這一目標的最佳實踐。這個邏輯可以在我的示例中有效地添加到TitleListActivity中。所有的歷史後退按鈕邏輯等當然應該工作。

任何建議高度讚賞

感謝

馬丁

回答

1

我可能會做一個活動發射類/控制器用於啓動TitleList或標題的靜態方法。會像ActivityLauncher.lauchAuthorActivity(上下文,auther),並且該函數將決定要啓動的活動。

+0

非常感謝Heinrisch,這就是我現在想到的(我把它作爲靜態方法的ApplicationClass。我對它很好,但仍然想知道是否有一種方法在「非常早」啓動一個Activity – dorjeduck

+0

好吧,最好的事情是不要發動錯誤的活動,你可以在創建一個新的活動並完成你開始的那個錯誤的活動,但那不是很好。一個活動的生命週期可以在這裏查看:http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle – Heinrisch

+0

我同意你的Heinrisch。我的猶豫來自這個想法,即決定是否一個列表被顯示,或者只有一個標題的情況下,標題視圖本身應該位於ListActivity權限內,這就是爲什麼我想知道什麼是一個好的設計模式這種情況,但很可能我只是在這裏胡言亂語。也許我可以將啓動器邏輯移動到TitleListActivity類中,使其與其域相關聯。有了這個我應該滿意我猜:)再次感謝您的反饋。 – dorjeduck

0

更好地使用Intent.putExtra()而不是靜態方法或類。

您必須已經使用類似AuthorId的東西才能獲取相應作者的標題。

只需使用1多個屬性TitleCount

intent.putExtra("TitleCount", n); 

檢查它在TitleListActivity,如果其1個完成()中的onCreate一號線TitleListActivity並打開扉頁。

如果您在TitleListActivity中獲取標題的所有數據(包括標題數量),請檢查包含這些標題的Array/ArrayList size

+0

非常感謝Archie的反饋。從我的感覺看來,在任何情況下調用ListActivity似乎都是正確的,它應該有權決定它是否顯示列表或轉發來啓動另一個Activity,只能顯示一個項目。但是我想知道的是,在這種情況下,只有一個項目並且我也可以直接調用TitleViewActivity,這種額外的startActivity是多麼昂貴。我希望在你調用startActivity的時候,在android引擎下會有一些事情發生...... – dorjeduck

+0

在這種情況下,請嘗試在之前的活動中進行檢查。在去TitleListActivity之前,檢查count是否爲1,如果是,則直接進入TitleViewActivity而不是去TitleListActivity並獲取重定向(extra startActivity)。但我不認爲這個額外的startActivity會是一個問題。 –

+0

Thx。這是我現在的做法,也是Heinrisch推薦的。它工作正常,我的整個職位只是爲了學習有關android設計模式的推薦方式。就像我們大多數人一樣,我非常欣賞設計模式,所以我是Android新手,試圖找出... – dorjeduck

相關問題