2012-09-26 10 views
5

W Androidzie można użyć/zaimplementować detektor wywołujący wywołanie zwrotne, gdy liczba dzieci dla danego widoku zmienia się dynamicznie? Załóżmy na przykład, że Widok ma 3 najbliższe dzieci, a jeden jest usuwany za pomocą kodu. Potrzebuję zdarzenia, by strzelić, by powiedzieć, że liczba bezpośrednich dzieci się zmieniła.Android - Odsłuchiwanie/oddzwanianie w przypadku zmiany liczby dzieci w widoku

Aby wyjaśnić, nie trzeba wykonywać przejścia w głębi drzewa View, aby policzyć dzieci, jestem tylko zainteresowany liczeniem dzieci na pierwszej warstwie danego widoku.

Wielkie dzięki

Odpowiedz

17

wierzę, że chcesz użyć OnHierarchyChangeListener: ubterfejsu

dotyczący zwrotna powoływać gdy hierarchia w tym widoku zmieniło. Hierarchia zmienia się za każdym razem, gdy dziecko jest dodawane lub usuwane z tego widoku.

Posiada dwa wywołania zwrotne:

+0

To świetnie i właśnie tego szukałem! Wielkie dzięki – ComethTheNerd

+0

Cieszę się, że mogę pomóc. – Sam

+0

tak, to jest ten, który zadał +1. Nie wiedziałem o tym już dostępnym. Więc napisałem coś dla siebie, gdybym stanął w obliczu takiego wymogu. :) – Javanator

1

Jest prosty do oszukania.

  1. Wystarczy przedłużyć Zobacz Grupę Twój dodanie wgląd i zastąpić usunąć i ewentualnie metodę addView.

  2. Zapewnij implementację interfejsu wywołania zwrotnego dla dowolnej metody klasy ViewGroup, aby ustawić detektor. Wywołaj jego delegata z zastąpionej metody usuwania i zmień nazwę na . Wykonaj przekazanie interfejsu Callback, aby odebrał bieżący rozmiar.

coś takiego

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

To jest naprawdę miłe sugestia, że ​​myślę, że będzie idealny dla bardziej zaawansowanego śledzenia stanu. W tym przypadku jednak używam sugerowanego detektora hierarchii, ponieważ wydaje się, że jest to gotowe rozwiązanie. Dzięki za twoją pomoc – ComethTheNerd

Powiązane problemy