마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

섹션(헤더)으로 나누어진 리스트뷰 만드는법 좀 알려주세요

0 추천

안녕하세요

ios에서 넘어온 개발자입니다.

ios에서는 리스트뷰를 만들때 indexpath라고해서 

1-1,2,3,4,5 . . .

2-1,2,3,4,5 . . .

2-1,2,3,4,5 . . .

이런식으로 2차원 그룹을 갖습니다

 

1번섹션의 1은 1-1

1번섹션의 2는 1-2

2번섹션의 1은 2-1

 

이런식으로 섹션을 나누어서 

자연스럽게 섹션별로 헤더를 갖습니다

 

그런데 안드로이드에는 이런게 없다고 하더군요

제가보고있는 안드로이드책에도 당당하게 없다고 나와있습니다 ㅠㅠ

 

2차원은 지원안하고 1차원만 지원하기때문에

데이터의 전체갯수를 구하고 ..

예를들면 갯수가 100이면

position이 0부터 순서대로 99까지 가더군요

 

그래서 이거가지고는 섹션을 나눈다는게 불가능해보여서

github를 뒤져봤더니 있긴 있는데 제가 원하는 방식은 아니고 편법을 사용했더군요

 

그러니까 타입을 2개로 지정한다음에

1차원 배열로 순서대로 데이터를 쌓아놨다가 그냥 그걸 차근차근 불러오더라구요

 

다른 소스들도 비슷했습니다

그렇다면 리스트뷰에서는 이렇게 무조건 1차원데이터를 사용할수밖에 없다는건가요?

 

아이폰에서는 MAP같은 딕셔너리배열을 이용해서 

key랑 배열을 조합하거든요

그래서 key는 헤더가 되고 배열은 데이터가 되는거죠

만약 데이터를 추가하거나 삭제하고싶으면 key를 찾아서 배열을 주물럭거리면 되었는데

 

안드로이드의 리스트뷰는 어떤식으로 구현을 해야하는지 3일동안 머리를 싸맸는데

답이 안나와서 혹시 좋은방법이 있을까 질문해봅니다

 

방법이 없으면 그냥 MAP을 하나의 ListArray에다가 때려놓고 순서대로 불러야하는 상황인데

데이터가 크고 계속 추가가 되는 형식이다보니 부담이 가네요...

초보자 님이 2015년 6월 25일 질문

2개의 답변

0 추천
네~! 생각하시는게 전부 맞습니다.

안드로이드 리스트뷰는 님이 말씀 하시는데로 1차원적으로 작업할수 밖에 없습니다.

아마 안드로이드를 계속 개발하시다 보시면 아시겠지만... 아이폰에서 간단히 쓰던 이벤트 혹은 함수들도 안드로이드에서 직접 구현 해야 하는것들이 대부분 일겁니다..

원하시는 기능은 직접구현을 하시던가 기존의 라이브러리를 쓰던가의 선택은 개발자의 몪이겠죠~~!
ThisPlus (46,920 포인트) 님이 2015년 6월 25일 답변
0 추천
글이 정확하게 이해가 되지는 않지만...

ExpandableListView 예제를 한번 보시면 원하시는 결과가 나올 수 있을 것 같은데요.

map 형식으로 구성이 되는것은 아니지만 header리스트 안에 자식이 되는 리스트를 구성하는 방법으로 구성하면될 것입니다.
chemkaaa (6,030 포인트) 님이 2015년 7월 3일 답변
...