6

Android では、特定のビューの子の数が動的に変化したときにコールバックを発生させるリスナーを使用/実装できますか? たとえば、ビューに 3 つの直下の子があり、そのうちの 1 つがコードによって削除された場合、直下の子の数が変更されたことを示すイベントを発生させる必要があります。

明確にするために、子をカウントするためにビュー ツリーで深度トラバーサルを実行する必要はありません。特定のビューの最初のレイヤーにある子の数をカウントすることに関心があるだけです。

どうもありがとう

4

2 に答える 2

30

OnHierarchyChangeListenerを使用したいと思います:

このビュー内の階層が変更されたときに呼び出されるコールバックのインターフェース定義。子がこのビューに追加またはこのビューから削除されるたびに、階層が変更されます。

2つのコールバックがあります。

于 2012-09-26T16:06:27.443 に答える
3

だますのは簡単です。

  1. 追加するビューをビューグループに拡張し、削除をオーバーライドし、オプションで addView メソッドをオーバーライドするだけです。

  2. コールバック インターフェイスの実装を ViewGroup クラス メソッドのいずれかに提供して、リスナーを設定します。オーバーライドされた remove および addView メソッド内からデリゲートを呼び出します。Callback Interface デリゲートを作成して、現在のサイズを受け取ります。

このようなもの

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);
    }
  }   
}
于 2012-09-26T15:59:16.547 に答える