프로그래밍/Android

리스트뷰 메쏘드 몇개

chance 2011. 9. 22. 16:45

 

>> 헤더 뷰 추가/제거 : addHeaderView( View ) / removeHeaderView( View )

>> 푸터 뷰 추가 : addFooterView( View ) / removeFooterView( View )

고정된 헤더나 푸터 뷰를 추가하는 메쏘드.

adapter 이외의 별도 뷰를 추가하는 용도로 사용된다. 여러개의 헤더, 푸터를 가질 수 있고,

레이아웃도 변경 가능하다.

 

위 메쏘드들은 adapter로 리스트를 구성하기전 (setAdapter)에 처리해 주어야 한다.

 

 

 

>> 화면에 보이고 있는 첫 아이템 포지션 : getFirstVisiblePosition()

 

 

>> x,y 포인터로 포지션 얻기 : pointToPosition(int, int)

 

boolean onTouchEvent(MotionEvent ev) {

int x = ev.getX();

int y = ev.getY();

int pos = pointToPosition( x, y );

if( pos == INVALID_POSITION ) {

아이템 없음.

}

 

>> 뷰얻기 : View v = getChildAt( pos );

pos를 직접 입력해 가져오는 건 위와 같지만, 포인터로 얻고자 하는 경우

pointToPosition 으로 얻어온 포지션에서 화면 첫 포지션(getFirstVisiblePosition)을

빼줘야 현재 선택한 row가 된다.

 

 

>> 스크롤 상태

myListView.setOnScrollListener( new OnScrollListener() {

public void onScroll(... ) {

}

 

public void onScrollStateChanged( AbsListView view, int scrollState ) {

if( scrollState == OnScrollListener.SCROLL_STATE_IDLE ) {

// 스크롤 정지 상태

}

 

if( scrollState == OnScrollListener.SCROLL_STATE_FILING) {

// 플링 중

}

 

if( scrollState == OnScrollListener.SCROLL_STATE_TOUCH_SCROLL ) {

// 사용자가 터치 중

}

}

});