SwipeRefreshLayout 기능을 사용하면서 ListView 스크롤 기능을 먹어버리는 바람에 구글링을 하다가
구글에서 제공한 SwipeRefreshLayout 클래스를 custom 하는 예제 소스를 찾아서 해결했는데요
어떻게 해결된건지 소스 분석 하고있는데 막혀서 코드리뷰를 부탁하고자 질문드립니다
public void setSwipeableChildren(final int... ids) {
assert ids != null;
mSwipeableChildren = new View[ids.length];
for (int i = 0; i < ids.length; i++) {
mSwipeableChildren[i] = findViewById(ids[i]);
}
}
@Override
public boolean canChildScrollUp() {
if(mSwipeableChildren != null && mSwipeableChildren.length > 0) {
for(View view : mSwipeableChildren) {
if(view != null && view.isShown() && !canViewScrollUp(view)) {
return false;
}
}
}
return true;
}
private static boolean canViewScrollUp(View view) {
if(Build.VERSION.SDK_INT >= 14) {
return ViewCompat.canScrollVertically(view, -1);
} else {
if(view instanceof AbsListView) {
final AbsListView listView = (AbsListView) view;
return listView.getChildCount() > 0 &&
(listView.getFirstVisiblePosition() > 0
|| listView.getChildAt(0).getTop() < listView.getPaddingTop());
} else {
return view.getScaleY() > 0;
}
}
}