我有一个由自定义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. 我正在尝试将实现切换到ExpandableListView,它提供了我必须编写的功能(滑动体)。我可能遇到的问题是我有一个花哨的<!>“无尽的<!>”; list实现,我正在使用ArrayAdapter #add方法在滚动时动态地将项添加到列表中(参见我的 androidguys.com上的教程)好吧,add缺少BaseExpandableListAdapter方法,所以我需要看看是否可以向内部数组添加项目(它没有对于ArrayAdapter)可能会执行ExpandableListView#notifyChanged()将处理
  2. 当我直接使用setBackgroundColor方法时,我没有看到任何内容的事实可能是由于随后调用startActivity调用,在显示新的Activity之前暂停所有绘制
  3. P.S。这已通过切换到ExpandableListView解决。我可以补充一点 - 它很漂亮!无需发明任何东西

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top