Android - 查看子项数量更改时的侦听器/回调

Posted

技术标签:

【中文标题】Android - 查看子项数量更改时的侦听器/回调【英文标题】:Android - Listener/Callback for when number of View children changes 【发布时间】:2012-09-18 07:20:56 【问题描述】:

android 中,可以使用/实现一个监听器,当给定 View 的子级数量动态变化时触发回调?例如,一个 View 有 3 个直接子级,其中一个通过代码被删除,我需要一个事件来触发,说明直接子级的数量发生了变化。

澄清一下,我不需要在视图树上执行深度遍历来计算子节点数,我只对计算给定视图第一层的子节点数感兴趣。

非常感谢

【问题讨论】:

【参考方案1】:

它很容易被欺骗。

    只需扩展视图组您将视图添加到并覆盖删除和 可选的 addView 方法。

    将回调接口实现提供给您的任何 ViewGroup 类方法来设置监听器。从内部调用它的代表 覆盖删除和 添加视图方法。使您的回调接口委托接收当前大小。

类似的东西

public class MyViewGroup extends LinearLayout 

  // provide constructor implmentation to justify super constructor requirement

  private OnSizeChangeListener callback;

  public void setOnSizeChangeListener(OnSizeChangeListener callback) 
     this.callback = callback;
  

  @Override
  public void remove(View view) 
    super.remove(view);
    if(callback != null) 
       callback.sizeChanged(getChildCount);
    
     

【讨论】:

这是一个非常巧妙的建议,我认为它非常适合更高级的状态跟踪。然而,在这种情况下,我将使用建议的层次结构侦听器,因为它似乎是一个现成的解决方案。不过感谢您的帮助【参考方案2】:

相信你想用OnHierarchyChangeListener:

当该视图中的层次结构发生变化时要调用的回调的接口定义。每当将子级添加到此视图或从中删除时,层次结构都会发生变化。

它有两个回调:

onChildViewAdded() onChildViewRemoved()

【讨论】:

是的,实际上是有人问 +1。我不知道这个已经可用的。如果我遇到这样的要求,那就为我自己写一些东西。 :)

以上是关于Android - 查看子项数量更改时的侦听器/回调的主要内容,如果未能解决你的问题,请参考以下文章

DOM更改时的JavaScript事件侦听器[重复]

Android - 使用 GreenDao ORM 更改观察者数据库

更改可扩展 ListView Android 中单击的子项的背景颜色

当父母在Android中折叠时如何更改可扩展列表视图子项的视图?

Android - 在 ExpandableListView 中查看每个组的特定子项

标签更改监听器android