Android - 侦听器/回调查看子项数量的变化

时间:2012-09-26 15:47:04

标签: android callback listener

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

为了澄清,我不需要在View树上执行深度遍历来计算子项,我只想计算给定视图第一层的子项数。

非常感谢

2 个答案:

答案 0 :(得分:21)

我相信你想使用OnHierarchyChangeListener

  

当此视图中的层次结构发生更改时要调用的回调的接口定义。只要在此视图中添加或删除子项,层次结构就会更改。

它有两个回调:

答案 1 :(得分:1)

简单易懂。

  1. 只需扩展View Group即可添加View Into并覆盖remove和 可选的addView方法。

  2. 将您的回调接口实施提供给您的任何一个 ViewGroup类方法设置监听器。从内部呼叫其代表 重写删除和 addView方法。使您的回调接口委托接收当前大小。

  3. 像这样的东西

    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);
        }
      }   
    }