NestedScrollView안에 있는 리싸이클러뷰의 아이템으로 scrollToPosition을 할 경우
float y = recyclerView.getY();
or
float y = recyclerView.getChildAt(position);
nestedScroll.scrollToPosition((int)y)
등등의 값으로 받아와야 해당 아이템으로 스크롤을 할 수가 있는데, getY, getChildAt에서 null 또는 0값을 받아오는 경우가 있다.
예상컨데,
fragment에서 recyclerView를 그려주긴 그려주는데, 해당 위젯의 정확한 좌표값을 가져오기 위해서는 listener를 필요로 하는 듯 하다.
가령, TabLayout에서 selectTab리스너 안에 getY, getChildAt() 을 사용한 경우 해당 리사이클러뷰의 아이템 좌표값을 받아오는 것을 확인할 수 있었다.
따라서, 다른 방법을 찾기 전까지는 TreeObsever를 달아서 해당 리사이클러뷰의 아이템 위치값을 찾아주어야 할 것 같다.
// 리사이클러뷰의 위치값을 받기위해 위젯트리 설정
_rvGroupShowAllClass.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Log.d("test", "" + _rvGroupShowAllClass.getId());
Log.d("test", "" + _rvGroupShowAllClass.getY());
Log.d("test", "" + _rvGroupShowAllClass.getChildAt(1).getY());
NestedScrollView.scrollTo(0 , (int) _rvGroupShowAllClass.getChildAt(_position).getY());
_rvGroupShowAllClass.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});