일부 항목 사이에 일부 구분선이있는 ListView
을 생성하려고합니다. 일부 속성 섹션에서 볼 수있는 것처럼 말입니다. 아래 예제를 참조하십시오. 일부 textviews으로 구성된 List
을 생성하려고 시도하고 그 다음에 목록의 다음 부분을 설명하는 멋진 구분선이 표시되고 다시 텍스트보기가 표시됩니다. 어떻게 할 수 있습니까? 목록에 추가 할 다른보기를 만드는 방법에 대해 생각해 보았습니다. 이게 가야 할 길인가?일부 섹션 위에 헤더가있는 ListView를 생성하는 방법은 무엇입니까?
답변
찾고있을 것 같아요. 나는 그것이 최고의 것인지 모른다.
이 tutorial에 설명 된대로 ArrayAdapter에서 파생 된 사용자 지정 어댑터를 사용합니다. 어댑터 클래스에서 getView 메소드의 위치가 일반 행인지 확인한 다음 행 레이아웃을 확장합니다. 새로운 그룹의 첫 번째 행 인 경우 헤드 라인 레이아웃을 늘리며 일반 행과 그 위에 그룹 헤드 라인을 추가합니다.
헤더를 행 중 하나에 혼합하지 않으려는 경우. 다음 솔루션을 고려해보십시오.
getItemViewType과 getViewTypeCount의 두 가지 방법을 덮어 쓸 수 있습니다. 이제 다른 행을 표시 할 수있는 목록이 있습니다. getView 메소드에서 항목의 예상보기 유형을 점검하고 그에 따라 다른 레이아웃을 확장해야합니다.
목록은 올바른 재활용보기 만 getView 메소드에 반환하는 방식으로 사용자를 위해 재활용을 처리합니다. 즉, recycleView가 null이 아니면 현재 셀을 표시하는 데 사용할 수 있습니다.
은 내가 해결책을 가지고 당신이 android.widget.ExpandableListView
http://developer.android.com/reference/android/widget/ExpandableListView.html
확장 가능한 목록은 트리보기와 비슷하다고 생각합니다. http : //mylifewithandroid.blogspot.com/2008/05/expandable-lists.html – Janusz
두 가지 수준의 목록입니다. 귀하의 예에서 큰 오렌지색 항목으로 최상위 항목을 사용하여 귀하의 예처럼 보이게 만들 수는 있습니다. 이제는 좀 더 생각해 봤지만 추악한 해결책이 될 수 있다고 생각합니다. –
내 SectionedAdapter
을 GPLv3이 허용되는 경우 (일부 업스트림 코드로 인해 라이센스가 허용됨) 사용할 수 있습니다. 좀 더 유연하고 제한적인 라이센스 (Apache 2)가 필요한 경우 내 MergeAdapter
을 사용할 수 있습니다.
MergeAdapter를 사용하여 필요한 모든 것을 구현했습니다. 그것은 내가 찾고 있었던 바로 그 것이다! 감사합니다, 마크 (언제나처럼 도움이됩니다). –
나는 또한 이것에 대한 대답에 흥미가있다. 이 작업을 수행하는 더 간단한 방법이 있어야합니다.
어댑터를 살펴보면 Adapter.getItemViewType (int position) 메서드가 있습니다.
ListView는 반환 된 항목이 머리글 또는 바닥 글인지 여부를 나타내는 ITEM_VIEW_TYPE_HEADER_OR_FOOTER를 정의합니다.
나는 그것을 시도하지는 않았지만 자신의 어댑터를 만들고 그것이 머리글 또는 바닥 글임을 나타내는 형식의 항목을 반환하면 ListView가 적절히 표시한다는 것을 전제로합니다.
머리글과 바닥 글은 실제로 머리글과 바닥 글보기에만 사용됩니다. 그보기는 목록 위와 아래에 있습니다. – Janusz
스크린 샷과 매우 유사한 것을 만들었다면 android.preference.PreferenceActivity를 사용하여 쉽게 만들 수있는 스크린을 만들 수 있습니다. 디바이더는 그에 의해로드 된 환경 설정 XML의 PreferenceCategory 요소에있는 android : title 속성을 사용하여 작성됩니다. 비록이 경우에는 자신의 ListView를 사용하는 것에 대해 이야기하는 것이 아니기 때문에 답변으로 게시하지 마십시오. 그것은 당신을 위해 그것을 처리합니다. –