6

在Android中,可以使用/实现一个监听器,当给定视图的子节点数量动态变化时触发回调?例如,一个视图有 3 个直接子级,并且通过代码删除了一个,我需要一个事件来触发说直接子级的数量已经改变。

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

非常感谢

4

2 回答 2

30

我相信您想使用OnHierarchyChangeListener

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

它有两个回调:

于 2012-09-26T16:06:27.443 回答
3

它很容易欺骗。

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

  2. 将您的回调接口实现提供给您的任何 ViewGroup 类方法以设置侦听器。从重写的 remove 和 addView 方法中调用其委托。使您的回调接口委托接收当前大小。

像这样的东西

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);
    }
  }   
}
于 2012-09-26T15:59:16.547 回答