2016-06-11 4 views
2

Я добавляю и удаляю View s в LinearLayout динамически.Слушатели на LinearLayout

Я пытаюсь проверить всякий раз, когда число детских изменений LinearLayout меняется, есть ли такой слушатель?

ответ

2

Посмотрите на ViewGroup.OnHierarchyChangeListener.

Используйте его onChildViewAdded() и onChildViewRemoved() методы со счетчиком для отслеживания количества детей ViewGroup.

Вы могли бы сделать что-то подобное в вашем Activity:

private childCount; 

// ... 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    // ... 

    final LinearLayout layout = (LinearLayout) findViewById(R.id.yourLayout); 

    childCount = layout.getChildCount(); 

    layout.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() { 
     @Override 
     public void onChildViewAdded(View parent, View child) { 
      childCount++; 
      //childCount = layout.getChildCount(); //a safer but slower approach 
     } 

     @Override 
     public void onChildViewRemoved(View parent, View child) { 
      childCount--; 
      //childCount = layout.getChildCount(); 
     } 
    }); 
} 

(просто грубый пример, возможно, потребуется реализовать счетчик логики в соответствии с вашими потребностями)

Смежные вопросы