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 화면이 바닦에 닿을때 처리
		} 
	}

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