안드로이드 커스텀 리스트 뷰 만들기
HeadView 와 FooterView 사용도 같이 알아보겠습니다.
<설명>
위에 보시는 사진이 리스트 뷰에 위에 붙여질 headview입니다.
리스트 뷰에 아이템들은 리스트 형식으로 뿌려지며 스크롤이 가능합니다.
그런 리스트 뷰 상단에 해당 뷰를 고정시켜 놓고 사용할 수 있는 것이 HEADVIEW입니다.
리스트 뷰를 스크롤 할 시 헤더 뷰도 같이 스크롤 할 수 있도록 합니다.
즉 헤더 뷰를 붙여 리스트 뷰 최상단의 아이템이 되는 것입니다.
아이템 리스트 최하단의 위치할 수 있는 FOOTERVIEW입니다. 리스트 뷰를 스크롤 하여 가장 최하단의 위치 시킬 수 있습니다. heradview 마찬가지로 스크롤 할 시 같이 움직입니다.
<소스 코드>
activity_main.xml
액티비티 메인의 리스트 뷰 하나만 생성합니다.
HEADTERVIEW 만들기
HEADTERVIEW를 새로운 XML로 만들어 줍니다.
텍스트 뷰 백그라운드는 간단하게 만들어 봤습니다.
drawable 폴더에서 새롭게 리소스를 생성하여 만들었습니다.
<HEADTERVIER 소스 >
FOOTERVIEW도 새로운 xml의 만들어 줍니다.
<FOOTERVIEW 소스>
커스텀 리스트 뷰 아이템 레이아웃
<item 소스>
<MainActivity 소스>
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View headterview = inflater.inflate(R.layout.headview, null);
View footerview = inflater.inflate(R.layout.footview, null);
layoutinflater를 통해 뷰에 레이아웃을 넣을 수 있습니다.
headterview 와 footerview의 레이아웃을 각각의 뷰에 넣고
listView.addHeaderView(headterview);
listView.addFooterView(footerview);
addHeaderView() 메서드를 통해 리스트 뷰에 headview를 삽입합니다.
addFooterView() 메서드를 통해 리스트 뷰에 footerview를 삽입합니다.
adepter = new Adepter(this, R.layout.listitem, values);
listView.setAdapter(adepter);
만들어놓은 BaseAdepter로 만든 Adepter 클래스를 인스턴스 하고 listview의 어댑터로 사용합니다.
headterview & footerview를 사용하고 setAdapter 설정을 하지 않으면 오류가 발생합니다.
주의하십시오.
<Adepter 소스>
리스트 뷰는 화면으로 노출된 아이템을 만들고 스크롤 하면서 새롭게 나오는 아이템을 그때 그때마다 만들어줍니다.
if (convertView == null)
리스트의 해당 아이템이 만들어져 있는지를 확인합니다.
만들어진 게 있다면 굳이 새롭게 만들지 말고 수정을 통해 리스트 뷰를 보이는 것이 더욱 효율적이라고 할 수 있습니다.
convertView.setTag(holder);
} else {
holder = (Holder) convertView.getTag();
}
이 부분은 만들 때 태그들 달아놓고 만들어진 게 있다면 해당 태그를 이용하여 해당 아이템을 수정할 수 있도록 holder에 아이템 부들을 넣는 작업입니다.
앱 실행한 영상입니다.
'dev > android' 카테고리의 다른 글
Unknown URI:content://downloads/public_downloads 해결방법 (1) | 2019.06.13 |
---|---|
안드로이드 underline center line 적용방법 (0) | 2019.01.01 |
안드로이드 동적 마진 변경 (0) | 2019.01.01 |
jsoup 기상청 날씨 파싱 (0) | 2019.01.01 |
안드로이드 현재시간 구하기 (0) | 2019.01.01 |