Intereting Posts
Каков правильный способ вызова MobileAds.initialize ()? Appcompat-v7: 21.0.0 ': не найден ресурс, который соответствует указанному имени: attr' android: actionModeShareDrawable ' Retrofit вызывает метод fail (), даже если код состояния заголовков 200 Как создать общий макет для Android XML для всех видов деятельности Взлом Android Fragment View State Loss при использовании FragmentTransaction.replace () Как читать pdf в приложении для Android? Вырезание многоточечного слога из растрового изображения и его размещение на прозрачности Как я могу поместить представление поверх glSurfaceView с прозрачным фоном? Как использовать API диаграммы Google Отключить вывод LogCat ПОЛНОСТЬЮ в версии Android-приложения? Как я могу закрыть приложение, нажав на андроид Строка усекается, когда ее слишком длинная Как я могу получить серийный номер телефона (IMEI) Java.lang.NoClassDefFoundError: com.google.android.gms.R $ стиль для Android Android – Как получить примерное время от одного места к другому?

Android – прослушиватель / обратный вызов для того, когда число изменений «Просмотр детей»

В Android можно использовать / внедрять прослушиватель, который запускает обратный вызов, когда число детей для данного представления изменяется динамически? Скажем, например, у View есть 3 непосредственных ребенка, и один из них удаляется с помощью кода, мне нужно событие, чтобы предупредить, что количество непосредственных детей изменилось.

Чтобы уточнить, мне не нужно выполнять обход глубины в дереве просмотра для подсчета детей, мне просто интересно подсчитать количество детей в первом слое данного представления.

Большое спасибо

Я считаю, что вы хотите использовать OnHierarchyChangeListener :

Определение интерфейса для обратного вызова, вызываемого при изменении иерархии в этом представлении. Иерархия изменяется всякий раз, когда ребенок добавляется или удаляется из этого представления.

Он имеет два обратных вызова:

  • onChildViewAdded ()
  • onChildViewRemoved ()

Его просто обмануть.

  1. Просто увеличьте группу View. Добавляйте View Into и переопределите удаление и, при необходимости, метод addView.

  2. Предоставьте реализацию интерфейса обратного вызова для любого из методов класса ViewGroup для установки прослушивателя. Вызовите его делегата из переопределенного метода remove и 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); } } }