2015-10-15 23 views
9

Mam RecyclerView na którego widok posiadacz konstruktor jestem dodanie onGlobalLayoutListener następującoRecyclerView itemView OnGlobalLayoutListener nie ognia dla wszystkich itemViews

public CustomViewHolder(final View itemView, Context context) { 
    super(itemView, context); 
    itemView.getViewTreeObserver().addOnGlobalLayoutListener(
     new ViewTreeObserver.OnGlobalLayoutListener() { 
      @Override 
      public void onGlobalLayout() { 
      // Get height here 
      } 
    }); 
} 

This pożary dla wszystkich itemViews, które są widoczne na ekranie, ale jak przewijam recyclerView, nie uruchamia się dla itemViews, który zaczyna pojawiać się na ekranie. Dlaczego? Jak mogę uchwycić tego słuchacza dla tych przedmiotów?

+0

nadpisanie 'onLayout' z listy' itemView' – pskink

Odpowiedz

8

Sugestie OnLayoutChangeListener takiego:

imageViewAvatar.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { 

@Override 
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { 
     imageViewAvatar.removeOnLayoutChangeListener(this); 
     // Get height here 
} 
}); 
+3

Daj mi powody, dla których warto korzystać z tego zamiast 'ViewTreeObserver', proszę. – deadfish