Android - 查看子项数量更改时的侦听器/回调
Posted
技术标签:
【中文标题】Android - 查看子项数量更改时的侦听器/回调【英文标题】:Android - Listener/Callback for when number of View children changes 【发布时间】:2012-09-18 07:20:56 【问题描述】:在 android 中,可以使用/实现一个监听器,当给定 View 的子级数量动态变化时触发回调?例如,一个 View 有 3 个直接子级,其中一个通过代码被删除,我需要一个事件来触发,说明直接子级的数量发生了变化。
澄清一下,我不需要在视图树上执行深度遍历来计算子节点数,我只对计算给定视图第一层的子节点数感兴趣。
非常感谢
【问题讨论】:
【参考方案1】:它很容易被欺骗。
只需扩展视图组您将视图添加到并覆盖删除和 可选的 addView 方法。
将回调接口实现提供给您的任何 ViewGroup 类方法来设置监听器。从内部调用它的代表 覆盖删除和 添加视图方法。使您的回调接口委托接收当前大小。
类似的东西
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);
【讨论】:
这是一个非常巧妙的建议,我认为它非常适合更高级的状态跟踪。然而,在这种情况下,我将使用建议的层次结构侦听器,因为它似乎是一个现成的解决方案。不过感谢您的帮助【参考方案2】:相信你想用OnHierarchyChangeListener:
当该视图中的层次结构发生变化时要调用的回调的接口定义。每当将子级添加到此视图或从中删除时,层次结构都会发生变化。
它有两个回调:
onChildViewAdded() onChildViewRemoved()【讨论】:
是的,实际上是有人问 +1。我不知道这个已经可用的。如果我遇到这样的要求,那就为我自己写一些东西。 :)以上是关于Android - 查看子项数量更改时的侦听器/回调的主要内容,如果未能解决你的问题,请参考以下文章
Android - 使用 GreenDao ORM 更改观察者数据库
更改可扩展 ListView Android 中单击的子项的背景颜色
当父母在Android中折叠时如何更改可扩展列表视图子项的视图?