Mobile/Android
[Android] 리스트뷰에서 스크롤 바닦에 닿았을때 체크하기
louis.dev
2013. 11. 14. 16:31
이번에는 리스트뷰에서 스크롤이 바닦에 닿았을때를 체크하는 방법을 포스팅 해보겠습니다.
이런 방법으로 스크롤의 상태를 체크하게 되면 스크롤이 최하단으로 내려갔을때 자동으로 다음 페이지의 데이터를 가져온다던가 하는(일명 무한스크롤) 일을 할수 있겠죠?
boolean lastitemVisibleFlag = false; //화면에 리스트의 마지막 아이템이 보여지는지 체크 listview.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //현재 화면에 보이는 첫번째 리스트 아이템의 번호(firstVisibleItem) + 현재 화면에 보이는 리스트 아이템의 갯수(visibleItemCount)가 리스트 전체의 갯수(totalItemCount) -1 보다 크거나 같을때 lastItemVisibleFlag = (totalItemCount > 0) && (firstVisibleItem + visibleItemCount >= totalItemCount; } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { //OnScrollListener.SCROLL_STATE_IDLE은 스크롤이 이동하다가 멈추었을때 발생되는 스크롤 상태입니다. //즉 스크롤이 바닦에 닿아 멈춘 상태에 처리를 하겠다는 뜻 if(scrollState == OnScrollListener.SCROLL_STATE_IDLE && lastItemVisibleFlag) { //TODO 화면이 바닦에 닿을때 처리 } } });위처럼 스크롤이벤트를 통해서 쉽게 리스트의 끝을 체크할수 있습니다.