2010-10-30 122 views
1

我有一個使用TextView的工作android應用程序,一些格式(換行符,破折的行)和Linkify生成一個原始的「ListView樣」顯示與每個「行」中的可點擊的網址。我想轉向一個真正的ListView,但我只是沒有找到我需要採取下一步的示例/解釋。Android概念幫助ListView

我已成功複製了HelloListView sample,從硬編碼字符串數組開始,然後移動到我的res/values/strings.xml中定義的字符串數組。我通過添加HttpClient代碼從服務中檢索一組數據,將結果解析爲一個String數組並將其提供給setListAdapter(),使得我的文本和鏈接顯示爲文本 - 僅在ListView項目中。

我想移動到下一個步驟,是使我的ListView每個「行」啓動瀏覽器中包含的數據的URL,或者通過 (A)單擊行中的任意位置,或 (B )單擊行數據中顯示的超鏈接

對於選項(A),看起來我需要讓我的onItemClick()方法發出一個啓動瀏覽器的意圖。這很簡單,但我不知道如何將URL與項目相關聯(目前它只是每個「行」文本的字符串內容的一部分)。如何將我的URL與其餘文本分開,以便我可以將瀏覽器啓動到相應的URL?我是否需要用自定義對象數組來替換我的String Array?

對於選項(B),我可以使用Linkify嗎?看起來,我的字符串數組元素被轉換爲單獨的TextViews(從HelloListView示例中生成Toast文本的方式推斷)。我可以訪問該TextView來運行Linkify嗎?我是否需要用TextView數組替換我的String Array並自己運行Linkify?我完全脫離基地嗎?

感謝任何人可以幫助解釋我想要做什麼,以幫助找到我的方式在SDK,樣本和其他幫助!

+0

或者我應該看看選項(C),這將是在列表視圖中的點擊啓動一個新的全屏幕TextView,我可以使用linkify顯示任意數量的超鏈接。 (這是我認爲我在新聞應用和社交網絡應用中看到的模式)。現在查看關於該模式的示例,以及如何將內容從單擊的列表視圖項移到可應用Linkify的通用基於TextView的類。 – jeffonc 2010-10-30 18:24:10

+0

得到了一個選項(C),它使用一個intent,一個設置簡單TextView的類,以及通過使用Bundle和Intent.putExtras()發送this.getIntent()將ListView行的內容傳遞給TextView。 getExtras()來接收。 (A)和(B)將針對CommonsWare的一些建議進行研究。 – jeffonc 2010-10-30 23:53:14

回答

0

如何將我的URL與其餘文本分開,以便我可以將瀏覽器啓動到相應的URL?

使用正則表達式(java.util.regex)來查找URL。

對於選項(B),我可以使用Linkify嗎?

是。

我可以訪問該TextView來運行Linkify嗎?

是。在您的ArrayAdapter中覆蓋getView()。鏈接到超類,並從super.getView()的結果中獲得TextView

更好的方法是先將字符串Linkify放入數組中,然後再放入數組中。

我是否需要將我的String Array替換爲TextView Array並自己運行Linkify?

不,這真的不是一個好主意。以下是我的一本書中的free excerpt,其中詳細介紹了定製ListView的各個行的情況,以防萬一。

+0

非常感謝,特別是摘錄! – jeffonc 2010-10-30 23:35:07

+0

**正則表達式建議在我的第一個示例中是可行的 - 對於其他可能存在多個鏈接的情況,或者您可能不希望在ListView中顯示鏈接,可能不具有可擴展性。 **我沒有意識到我可以Linkify一個字符串,將它填充到一個字符串數組中,填入ListView中,並在顯示時保留Linkify-cation。將不得不玩這個。 **摘錄正是我期待的那種概念性描述。再次感謝! – jeffonc 2010-10-30 23:47:18