Android - 花哨的ListView背景问题

时间:2009-10-22 17:32:35

标签: android listview background-color

我有一个由自定义ArrayAdapter支持的ListView,其中每个项目都有2个LinearLayouts - 一个叫做headhead,另一个叫body-body。 身体被隐藏(消失),直到用户点击它滑出的行。第二次点击(在头上)将隐藏身体。但是,如果用户点击正文,则会带来另一项活动。所有这一切都很好,问题就出现了:

当用户按下身体时,我想要一个动作的视觉指示,就像常规列表项在按下时会闪烁橙色背景一样。默认情况下,我没有得到这个,因为(我的理论)onPress事件被正文视图截获,而不是由列表项处理。

我尝试的第一件事是在onPress事件中执行body.setBackground('#ff00ff')(不要介意颜色)。这是行不通的(因为我怀疑)电话后没有重新粉刷。然后我再挖一点,决定使用基于<selector/>的背景。我在body_background.xml文件夹中定义了drawable,并将其分配给了正文的背景属性。

在那里我注意到只有在列表处理偶数时才会改变背景。例如,如果我设置<item android:state_selected="true" android:drawable="@drawable/selected"/>,那么当我按下头部时 - 两个元素(头部和身体)的背景都会改变,但是当我按下身体时 - 没有。

总结一下我的问题 - 如果我为它分配自定义onClick处理程序,如何更改列表项中子元素的背景?任何提示将不胜感激

1 个答案:

答案 0 :(得分:0)

行。以下是我在此过程中提供的更多信息。

  1. 我正在尝试将实现切换到ExpandableListView,它提供了我必须编写的功能(滑动体)。我可能遇到的问题是我有一个奇特的“无尽”列表实现,我正在使用ArrayAdapter #add方法在滚动时动态地将项添加到列表中(参见我的tutorial on androidguys.com)嗯,{{1 add中缺少方法所以我需要看看是否可以向内部数组添加项目(它不适用于ArrayAdapter)可能执行ExpandableListView#notifyChanged()将处理
  2. 我直接使用BaseExpandableListAdapter方法时没有看到任何内容的事实可能是由于后续调用setBackgroundColor调用会停止所有绘制,直到显示新的Activity
  3. P.S。这已通过切换到ExpandableListView解决。我可以补充一点 - 它很漂亮!无需发明任何东西