Android - 当视图子项数量发生变化时的监听器/回调函数

6
在Android中,是否可以使用/实现一个监听器,在给定View的子元素数量动态更改时触发回调?例如,假设一个View有3个直接子元素,并且通过代码删除了其中一个,我需要触发一个事件来表示直接子元素的数量已经更改。
为了澄清,我不需要对View树执行深度遍历以计算子元素的数量,我只是对给定View的第一层子元素数量感兴趣。
非常感谢。
2个回答

32

是的,这就是我实际上所要求的+1。我不知道已经有这样一个可用的东西了。所以如果我遇到这样的需求,我会自己写一些代码。 :) - Rohit Sharma

3

这很容易欺骗。

  1. 只需扩展您添加视图的ViewGroup并覆盖remove方法和可选的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);
    }
  }   
}

这是一个非常棒的建议,我认为它非常适合更高级的状态跟踪。但在这种情况下,我将使用建议的层次结构监听器,因为它似乎是一个现成的解决方案。谢谢你的帮助。 - Darius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接