在Android中,是否可以使用/实现一个监听器,在给定View的子元素数量动态更改时触发回调?例如,假设一个View有3个直接子元素,并且通过代码删除了其中一个,我需要触发一个事件来表示直接子元素的数量已经更改。
为了澄清,我不需要对View树执行深度遍历以计算子元素的数量,我只是对给定View的第一层子元素数量感兴趣。
非常感谢。
为了澄清,我不需要对View树执行深度遍历以计算子元素的数量,我只是对给定View的第一层子元素数量感兴趣。
非常感谢。
这很容易欺骗。
只需扩展您添加视图的ViewGroup并覆盖remove方法和可选的addView方法。
提供您的回调接口实现到您的任何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);
}
}
}