2010-01-13 34 views
0

Android的ListView控件失去的突出問題

我有一個包含一個ListView的佈局。在這個ListView中的每個視圖(行)是一個LinearLayout,其中包含3視圖 - CheckBox,ImageView和TextView(水平)

我的問題是這樣的 - 如果我使用軌跡球來突出顯示ListView中的一行, (行的背景顏色是橙色)。當某行突出顯示時,通過單擊軌跡球,我將當前顯示的佈局切換到另一個佈局(setContentView())。現在,如果使用ListView重新顯示原始佈局(我存儲它的實例以重新顯示它,它不會被重新創建!),突出顯示的行不再被突出顯示。據谷歌說,這是好的,只要我會使用軌跡球,亮點就會回來。

真正的問題是,即使我現在使用軌跡球在列表中向上或向下移動,ListView中的其他行也不會高亮顯示。相反,在滾動結果應該突出顯示的每一行中,TextView都會被選中,並且我知道,因爲我將TextView設置爲勾選(TruncateAt.MARQUEE)。

只有當我點擊軌跡球,然後高亮返回到其TextView正在滴答滴答的那一刻。

我試圖通過將TextView設置爲不可聚焦,不可點擊和禁用來解決此問題。我甚至試圖在ListView上設置setItemsCanFocus(false) - 仍然沒有成功。

請幫我...

謝謝!

+1

我不確定如何解決您的特定問題,但是我擔心的是您正在使用'setContentView()'來更改佈局,而不是啓動新的活動。爲什麼? – 2010-01-13 15:40:20

+0

我認爲這個問題正在被很多開發人員詢問......是否爲每個應用程序的屏幕使用新的Activity。我不認爲有必要爲每個屏幕創建一個新的活動...每個屏幕都是一個ViewGroup,我只是使用setContentView()在屏幕之間切換......這是錯的嗎? 謝謝。 – WhiteTigerK 2010-01-13 16:51:12

+1

通常情況下最好分成多個活動。一個原因是保持一致的後退按鈕行爲。就個人而言,我覺得代碼最終變得更清潔,我不喜歡在活動中管理太多的狀態。 – James 2010-01-13 18:59:34

回答

0

我有一個包含 ListView的佈局。在此 的ListView每個View(行)是的LinearLayout其 包含3個視圖 - 複選框,ImageView的 和一個TextView(水平)

相反,使用CheckedTextViewImageView,並使用android:choiceModeListView。現在

,如果再次顯示原始 佈局使用ListView(我保存它 實例重新顯示出來,它 沒有被重新創建!),在 突出行不突出 了。

不要那樣做。使用ViewFlipper,或者更改ListView的可見性以及您展示的任何其他內容,或者如果您覺得需要將其全部保存到一個Activity。或者,正如Lew先生所建議的,當您點擊ListView時,請啓動另一個Activity

我懷疑這些組合會幫助您解決問題。

+0

關於CheckedTextView,我不知道這個視圖,但我不認爲這是我的問題。至於選擇模式 - 我沒有提到它,但我確實將選擇模式設置爲MULTIPLE,因爲我想要選擇多個項目。 關於ViewFlipper - 這是我不熟悉的anoter類,但在閱讀完後,它對我來說不是一個好的解決方案(我認爲...) - 沒有選擇只做一次翻轉開始翻轉,而不是停止它......我甚至試圖找到一個事件,當一個視圖被翻轉,但沒有這樣的事情。 謝謝。 – WhiteTigerK 2010-01-13 16:55:04

+0

「但我確實將選擇模式設置爲MULTIPLE,因爲我想要選擇幾個項目」 - 這意味着您必須使用CheckedTextView才能正常工作。 「沒有選擇只做一次翻轉」 - 請仔細閱讀文檔。或者,看看http://github.com/commonsguy/cw-android/tree/master/Fancy/Flipper1/ – CommonsWare 2010-01-13 17:29:39