[Android] 리스트뷰에서 스크롤 바닦에 닿았을때 체크하기

Published on: 2013. 11. 14. 16:31 by louis.dev
이번에는 리스트뷰에서 스크롤이 바닦에 닿았을때를 체크하는 방법을 포스팅 해보겠습니다. 이런 방법으로 스크롤의 상태를 체크하게 되면 스크롤이 최하단으로 내려갔을때 자동으로 다음 페이지의 데이터를 가져온다던가 하는(일명 무한스크롤) 일을 할수 있겠죠?  
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 화면이 바닦에 닿을때 처리
		} 
	}

});
위처럼 스크롤이벤트를 통해서 쉽게 리스트의 끝을 체크할수 있습니다.