在Android中,当给定视图的子节点数动态变化时,可以使用/实现一个触发器来触发回调吗?例如,一个视图有3个直接子节点,一个通过代码删除,我需要一个事件来触发直接儿童的数量已经改变。
为了澄清,我不需要在View树上执行深度遍历来计算子项,我只想计算给定视图第一层的子项数。
非常感谢
答案 0 :(得分:21)
答案 1 :(得分:1)
简单易懂。
只需扩展View Group即可添加View Into并覆盖remove和 可选的addView方法。
将您的回调接口实施提供给您的任何一个 ViewGroup类方法设置监听器。从内部呼叫其代表 重写删除和 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);
}
}
}