2012-09-26 46 views
5

在Android中,可以使用/實現一個監聽器,當給定視圖的子代數動態變化時觸發回調?比如說一個視圖有3個直接的孩子,其中一個通過代碼被刪除,我需要一個事件來觸發,說直接孩子的數量已經改變了。安卓系統 - 查看兒童更改次數時的監聽器/回調

爲了澄清,我不需要在View樹上執行深度遍歷來計數兒童,我只是想計算給定View的第一層兒童的數量。

非常感謝

回答

17

我相信你想使用的OnHierarchyChangeListener:何時該視圖中的層次結構改爲調用的回調

接口定義。無論何時將小孩添加到此視圖或從中移除,層次結構都會更改。

它有兩個回調:

+0

這很好,只是我在找!非常感謝 – ComethTheNerd

+0

很高興我能提供幫助。 – Sam

+0

是的,這實際上是問的+1。我不知道這個已經有的。所以如果我面對這樣的要求,就爲自己寫了一些東西。 :) – Javanator

1

它簡單的欺騙。

  1. 只是延長查看組您添加視圖進入和覆蓋撈出 可選的addView方法。

  2. 將您的回調接口實現提供給您的任何 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); 
    } 
    } 
} 
+0

這是一個非常整潔的建議,我認爲將是完美的,更先進的狀態跟蹤。但在這種情況下,使用建議的層次結構偵聽器,因爲它似乎是一個現成的解決方案。感謝您的幫助,雖然 – ComethTheNerd