안드로이드 With Java #22 ListView3 (Header, Footer)
위의 그림처럼 ListView
의 item
영역 맨 위나 아래에 고정된 영역을 말함.
Layout
이 될 xml 파일을 inflate()
시켜서 Java 코드 상에 가져오고 ListView
의 Header
혹은 Footer
에 붙이면 된다.
Layout
에 새로운 xml파일들을 생성했다.
Header
나 Footer
의 Layout
에 내용이 없는 경우 표기되지 않는다. 내부적으로 자식 뷰가 있어야 한다. 단순히 메인 Layout
에 배경색을 주고 50dp
정도의 길이를 주는 것만으로는 표기되지 않는다.
테스트를 하기 위해 가
데이터 값을 나
로 바꾸어보았다.
Header
부분을 클릭하면 나
에서 다시 가
로 바뀌게 만들 것이다.
기존에 onCreate()
메소드 안에 들어있던 arrayList
를 클래스의 전역멤버로 돌렸다. 그 이유는 Listener
영역에서 접근하기 쉽게 만들기 위해서이다. 전역멤버로 돌리지 않고 onCreate()
내부에서 사용하면
위와 같은 문제가 발생한다.
위와 같이 작성하면 멤버 변수인 arrayList
의 값은 변경된다. 값을 변경하기 위해서 가장 하기 쉬운 생각이 그냥 전역에 있는 arrayList
의 값을 바꾸는 것인데, 그렇게 하면 변경사항이 화면에 반영되지 않는다.
Adapter
의 내장 메소드인 notifyDataSetChanged()
를 사용하면 된다.
위와 같은 형식으로 가능하다.
Header 클릭 전
Header 클릭 후