Java/Android

listView 내에서 각 row 객체에 접근하기

체리필터 2013. 9. 25. 21:38
728x90
반응형

보통 android에서 listView를 생성하는 방법은 ArrayAdapter에서 getView를 통해 하나씩 하나씩 각각의 position 정보를 리턴해서 만든다.

만들줄만 알았지, 가져다 쓰는 listView에서 각 개체에 접근하는 법을 몰라 헤메다가 나름 정리해 보았다.

 

1. Activity가 되었던 Fragment가 되었던 OnScrollListener를 implements 한 후 필요한 method를 구현한다.

2. 필요한 method 중 onScroll과 onScrollStateChanged 에서 필요한 내용에 접근한다.

3. onScroll method에서는 다음과 같은 방법으로 처리

 

@Override

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

    for(int i = firstVisibleItem; i<(firstVisibleItem + visibleItemCount); i++) {

    }

}

 

1. 위에서 넘겨주는 파라미터 정보를 사용한다.

view는 전체 listView... firstVisibleItem은 현재 스크롤 상태에서 첫번째 보이는 아이템 키, visibleItemCount는 현재 화면상에 보이는 아이템 개수, totalItemCount는 보이지 않아도 현재 listView에 적채되어 있는 모든 아이템 개수이다.

 

이 파라미터를 사용하여 필요한만큼 loop를 돌린다.

 

이때 i의 값이 -1일 경우에는 잘못된 위치 정보이므로 방어 코드를 삽입한다.

 

if(i == AdapterView.INVALID_POSITION) {

    break;

}

 

4. i 번째 View 객체를 다음과 같은 방법으로 가져온다.

 

ViewGroup child = (ViewGroup) view.getChildAt(i);

 

5. 가져온 child 객체에 접근하여 원하는 특정 작업을 한다.

 

=============================================================================================

 

그냥 내가 만들어 두고 내가 잊어 버리지 않게 할려고 정리하는 것이므로, 매우 불친절한 설명 --;;

죽어도 못 알아 듣겠다고 생각이 든다면 그때 질문해 주시면 답변 드릴께요 ;;;;

 

728x90
반응형