我有一個包含一個ListView的佈局。在這個ListView中的每個視圖(行)是一個LinearLayout,其中包含3視圖 - CheckBox,ImageView和TextView(水平)
我的問題是這樣的 - 如果我使用軌跡球來突出顯示ListView中的一行, (行的背景顏色是橙色)。當某行突出顯示時,通過單擊軌跡球,我將當前顯示的佈局切換到另一個佈局(setContentView())。現在,如果使用ListView重新顯示原始佈局(我存儲它的實例以重新顯示它,它不會被重新創建!),突出顯示的行不再被突出顯示。據谷歌說,這是好的,只要我會使用軌跡球,亮點就會回來。
真正的問題是,即使我現在使用軌跡球在列表中向上或向下移動,ListView中的其他行也不會高亮顯示。相反,在滾動結果應該突出顯示的每一行中,TextView都會被選中,並且我知道,因爲我將TextView設置爲勾選(TruncateAt.MARQUEE)。
只有當我點擊軌跡球,然後高亮返回到其TextView正在滴答滴答的那一刻。
我試圖通過將TextView設置爲不可聚焦,不可點擊和禁用來解決此問題。我甚至試圖在ListView上設置setItemsCanFocus(false) - 仍然沒有成功。
請幫我...
謝謝!
我不確定如何解決您的特定問題,但是我擔心的是您正在使用'setContentView()'來更改佈局,而不是啓動新的活動。爲什麼? – 2010-01-13 15:40:20
我認爲這個問題正在被很多開發人員詢問......是否爲每個應用程序的屏幕使用新的Activity。我不認爲有必要爲每個屏幕創建一個新的活動...每個屏幕都是一個ViewGroup,我只是使用setContentView()在屏幕之間切換......這是錯的嗎? 謝謝。 – WhiteTigerK 2010-01-13 16:51:12
通常情況下最好分成多個活動。一個原因是保持一致的後退按鈕行爲。就個人而言,我覺得代碼最終變得更清潔,我不喜歡在活動中管理太多的狀態。 – James 2010-01-13 18:59:34