안드로이드 커스텀 리스트 뷰 만들기
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 | 






