재주부리기

Xamarin Custom Listview 사용하기 본문

프로그래밍/Xamarin

Xamarin Custom Listview 사용하기

곰대지 2016. 11. 20. 01:14

이번엔 안드로이드에서 가장 많이 쓰이는 형식인 Custom Listview에 대해서 알아보려 합니다


안드로이드의 Custom Listview 예제는 정말 많습니다만..


Xamarin으로 된 예제는 정말 없더군요. 외국 사이트로 가야...


사실 Xamarin에서 구현하는 방법도 똑같지만, 소스코드가 전부 Java로 되어있어서.. Xamarin의 소스코드와는 아주 약간 다를 뿐입니다.


뭐 조금이라도 아는 분들이야 알아서 잘 적용시키겠지만.. 맨땅에 헤딩하는 저로서는 처음엔 그 하나 바뀌는게 굉장히 어려웠습니다 ㅠㅠ


Custom ListView 구현 순서를 간단히 보면


1. Custom ListView View 작성


2. Custom ListView Code 작성


3. Custom ListView Holder 정의


4. Main Activity의 ListView의 Adapter에 미리 정의한 Custom ListView 구현


뭐.. 이렇게 하면 될까요


천천히 하나씩 해보겠습니다.


우선 구현하고 싶은 모양의 ListView Item(한개의 로우)를 정의합니다. 여기서 정의되는 Item의 모양이 ListView에서 반복되게 됩니다.


저는 업무상 GridView형식의 ListView만 정의하지만 보통 안드로이드에서 많이 쓰는 '썸네일 + 타이틀 + 설명'의 모양으로 만들어보겠습니다.

요런 모양이 되겠군요



Custom ListView의 Row에 대한 정보를 담을 RowInfo 클래스를 만듭니다.
RowInfo.cs



여기가 ListView의 한개의 로우가 될 Layout을 정의하는 부분입니다. Main Layout에서 작성된 ListView의 Adapter가 되겠네요.

CustomListView.axml


CustomListView 클래스를 만들고 BaseAdapter를 상속받습니다.
CustomListView.cs


이제 CustomListView를 실제로 구현할 메인 레이아웃을 작성합니다.

Main.axml



Main.cs

만들어놓은 Adapter를 ListView에 적용합니다. Row는 딱 100개만 만들어보겠습니다. ImageView에 표기될 아이콘은.. 아무거나 쓰세요 ㅠㅠ


결과화면입니다. 이렇게 나오게 되는군요.

이렇게 하면 다 됐네요
복잡해보이지만 천천히 따라해보시면 별 어려운건 없습니다.

ListView에서는 아이템이 보여질때마다 getView()가 호출 됩니다.
여기서 해당되는 데이터를 View에 표시하기위해 findViewById()를 통해 해당되는 View를 얻어온 후 데이터를 표시하게 되죠.
convertView는 재활용 되는 View이기때문에 아이템을 표시 할때마다 findViewById()를 호출해서 View를 얻어오는 작업은 매우 비효율적이 됩니다. 그렇기에 Holder를 사용하여 View를 재사용하게 되는것입니다.


※ 일주일에 한 개 정도는.. 포스팅을 하고싶었는데 막상 설명하려니 제가 알고있는부분이 너무 부족한것도 있고.. 생각한것을 여기에 표현하는게 쉽지 않네요
먹고사는데 바쁘다보니 시간도 많이 모자르군요 ㅎ
이렇게 마무리한 포스팅도 크게 만족스럽지는 않지만 조금이나마 도움이 되길 바랍니다.
어차피 안드로이드 Custom ListView에 관한 설명은 다른곳에도 많으니, 여기서 부족한 개념부분에 대한것은 다른 고수님들의 포스팅을 참조하시면 될것같습니다. ㅎ


Comments