2010-03-06 7 views
6

일부 항목 사이에 일부 구분선이있는 ListView을 생성하려고합니다. 일부 속성 섹션에서 볼 수있는 것처럼 말입니다. 아래 예제를 참조하십시오. 일부 textviews으로 구성된 List을 생성하려고 시도하고 그 다음에 목록의 다음 부분을 설명하는 멋진 구분선이 표시되고 다시 텍스트보기가 표시됩니다. 어떻게 할 수 있습니까? 목록에 추가 할 다른보기를 만드는 방법에 대해 생각해 보았습니다. 이게 가야 할 길인가?일부 섹션 위에 헤더가있는 ListView를 생성하는 방법은 무엇입니까?

+1

스크린 샷과 매우 유사한 것을 만들었다면 android.preference.PreferenceActivity를 사용하여 쉽게 만들 수있는 스크린을 만들 수 있습니다. 디바이더는 그에 의해로드 된 환경 설정 XML의 PreferenceCategory 요소에있는 android : title 속성을 사용하여 작성됩니다. 비록이 경우에는 자신의 ListView를 사용하는 것에 대해 이야기하는 것이 아니기 때문에 답변으로 게시하지 마십시오. 그것은 당신을 위해 그것을 처리합니다. –

답변

10

찾고있을 것 같아요. 나는 그것이 최고의 것인지 모른다.

tutorial에 설명 된대로 ArrayAdapter에서 파생 된 사용자 지정 어댑터를 사용합니다. 어댑터 클래스에서 getView 메소드의 위치가 일반 행인지 확인한 다음 행 레이아웃을 확장합니다. 새로운 그룹의 첫 번째 행 인 경우 헤드 라인 레이아웃을 늘리며 일반 행과 그 위에 그룹 헤드 라인을 추가합니다.

헤더를 행 중 하나에 혼합하지 않으려는 경우. 다음 솔루션을 고려해보십시오.

getItemViewTypegetViewTypeCount의 두 가지 방법을 덮어 쓸 수 있습니다. 이제 다른 행을 표시 할 수있는 목록이 있습니다. getView 메소드에서 항목의 예상보기 유형을 점검하고 그에 따라 다른 레이아웃을 확장해야합니다.

목록은 올바른 재활용보기 만 getView 메소드에 반환하는 방식으로 사용자를 위해 재활용을 처리합니다. 즉, recycleView가 null이 아니면 현재 셀을 표시하는 데 사용할 수 있습니다.

1

은 내가 해결책을 가지고 당신이 android.widget.ExpandableListView

http://developer.android.com/reference/android/widget/ExpandableListView.html

+0

확장 가능한 목록은 트리보기와 비슷하다고 생각합니다. http : //mylifewithandroid.blogspot.com/2008/05/expandable-lists.html – Janusz

+0

두 가지 수준의 목록입니다. 귀하의 예에서 큰 오렌지색 항목으로 최상위 항목을 사용하여 귀하의 예처럼 보이게 만들 수는 있습니다. 이제는 좀 더 생각해 봤지만 추악한 해결책이 될 수 있다고 생각합니다. –

3

SectionedAdapter을 GPLv3이 허용되는 경우 (일부 업스트림 코드로 인해 라이센스가 허용됨) 사용할 수 있습니다. 좀 더 유연하고 제한적인 라이센스 (Apache 2)가 필요한 경우 내 MergeAdapter을 사용할 수 있습니다.

+0

MergeAdapter를 사용하여 필요한 모든 것을 구현했습니다. 그것은 내가 찾고 있었던 바로 그 것이다! 감사합니다, 마크 (언제나처럼 도움이됩니다). –

0

나는 또한 이것에 대한 대답에 흥미가있다. 이 작업을 수행하는 더 간단한 방법이 있어야합니다.

어댑터를 살펴보면 Adapter.getItemViewType (int position) 메서드가 있습니다.

ListView는 반환 된 항목이 머리글 또는 바닥 글인지 여부를 나타내는 ITEM_VIEW_TYPE_HEADER_OR_FOOTER를 정의합니다.

나는 그것을 시도하지는 않았지만 자신의 어댑터를 만들고 그것이 머리글 또는 바닥 글임을 나타내는 형식의 항목을 반환하면 ListView가 적절히 표시한다는 것을 전제로합니다.

+0

머리글과 바닥 글은 실제로 머리글과 바닥 글보기에만 사용됩니다. 그보기는 목록 위와 아래에 있습니다. – Janusz