2009-10-22 54 views
0

我有一個由自定義ArrayAdapter支持的ListView,其中每個項目都有2個LinearLayouts - 一個是我稱之爲head的,另一個是body - body。 直到用戶點擊該行時,它纔會隱藏(消失)。第二次點擊(在頭上)會隱藏身體。但是,如果用戶點擊身體,它會帶來另一項活動。所有這一切都很好,問題來了:Android - 看中ListView後臺問題

當用戶按下身體時,我想要一個可視化的動作指示,就像常規列表項目按下時閃爍橙色背景一樣。我沒有得到這個默認,因爲(我的理論)onPress事件被截獲的身體的看法,並沒有處理的列表項。

我嘗試的第一件事是在onPress事件中執行body.setBackground('#ff00ff')(不必介意顏色)。這是行不通的,因爲(我懷疑)通話後沒有重新粉刷。然後我挖了一點點,並決定使用基於背景的<selector/>。我在drawable文件夾中定義了body_background.xml,並將其指定給身體的背景屬性。

在那裏我注意到,只有偶數由列表處理時,背景纔會改變。例如,如果我設置<item android:state_selected="true" android:drawable="@drawable/selected"/>,那麼當我按下頭部時 - 兩個元素(頭部和身體)的背景都會改變,但是當我按下身體時 - 什麼都沒有。

因此,總結我的問題 - 如果我將自定義onClick處理程序分配給它,我如何更改列表項中的子元素的背景?任何提示將不勝感激

回答

0

好的。以下是我一路挖掘的更多信息。

  1. 我目前正在嘗試切換到ExpandableListView,它提供了我必須編碼(滑動體)的功能。我在這裏可能遇到的問題是我有一個奇特的「無盡的」列表實現,我正在使用ArrayAdapter#add方法在滾動時動態添加項目到列表中(請參閱我的tutorial on androidguys.com)那麼,BaseExpandableListAdapter中缺少add方法所以我需要看看是否將項目添加到內部數組將會工作(它不適用於ArrayAdapter)可能會做ExpandableListView#notifyChanged()將照顧該
  2. 事實上,我直接沒有看到任何東西使用setBackgroundColor方法可能是由於對startActivity呼叫的後續呼叫,直到顯示新的活動,停止所有繪畫

PS這已通過切換到ExpandableListView解決。我可以補充 - 它很漂亮!無需發明任何東西