2011-10-30 9 views

Odpowiedz

19

Wystarczy spojrzeć na ten przykład Android – Sectioned Headers in ListViews, który ładnie opisuje, jak zaimplementować przekrojone nagłówki w ListViews.

I

android-amazing-listview

Jeff Sharkey's SeparatedListAdapter

MergeAdapter by CommonsWare

Dzięki.

+0

Dziękuję, już rozwiązać ten problem. – stream

+0

czy którykolwiek z tych linków pomaga przy przypinaniu wiersza nagłówka do górnej części ekranu, gdy użytkownik przewija sekcje? – topwik

+0

@towpse - Hej, nie rozumiem, co masz na myśli? – user370305

12

Utwórz układ nagłówka w układzie Lista poz. Używamy opcji WIDOCZNOŚĆ, aby pokazać i ukryć UKŁAD NAGŁÓWKA. To będzie działać jak nagłówek sekcji.

W metodzie "getView", sprawdź pierwszą literę "pola nazwy (w przypadku, gdy wyświetlasz w zgodnej z Name)" z pierwszą literą poprzedniego LIST ITEMS "pole nazwy". Jeśli macthes ukryje LAYOUT HEADER (z widokiem tekstowym), to pokaże UKŁAD HEADER LAYOUT z tekstem nagłówka pokazującym pierwszą literę pola nazwy.

Oto kod

String nameFirstLetter = "A"; // Deklaruj to globalnie, nie wewnątrz getView.

// Wewnątrz getView Nazwa ciągu F = Nazwa.slice (0,1);

if(!nameFirstLetter.equals(nameF)){ 
     nameFirstLetter = nameF ;   
     holder.headerText.setText(nameFirstLetter); 
     holder.headerLayout.setVisibility(View.VISIBLE); 
    }else{ 
     holder.headerLayout.setVisibility(View.GONE); 
    } 

Jest to najprostszy sposób, aby pokazać nagłówek przekroju w widoku listy Android, ale to nie będzie działać jak nagłówka sekcji iPhone, tj. Nagłówek sekcji ukrywa się wraz z innymi elementami listy podczas przewijania w górę/w dół.

+0

Jeśli elementy listy są klikalne, powoduje to kliknięcie nagłówka. Zwłaszcza z falami w nowoczesnym Androidzie, teraz jest to oczywiste dla użytkowników. –

3

Jeśli ktoś potrzebuje innego rozwiązania, szczególnie tych bardziej przyzwyczajonych do rozwoju systemu iOS, wolą go lub chcą emulować wygląd i odczucia systemu iOS; Polecam następujące:

http://applidium.com/en/news/headerlistview_for_android/

Logika jest taka sama jak dla iOS i wykonuje większość pracy nogę Ci

+0

Jeśli przejdziesz do repozytorium github, projekt został oznaczony jako przestarzały: https://github.com/applidium/HeaderListView – ThomasW

0

Możesz mieć spojrzenie na SectionedMergeAdapter. Jeśli masz wiele podlist listy danych, możesz połączyć je ze sobą i mieć dla nich nagłówki.

Przykładowy kod -

ListView listView = (ListView) findViewById(android.R.id.list); 

ArrayAdapter<Integer> adapter1 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList1); 
ArrayAdapter<Integer> adapter2 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList2); 
ArrayAdapter<Integer> adapter3 = 
     new ArrayAdapter<>(this, R.layout.item_list, android.R.id.text1, arrayList3); 

TextView tv1 = new TextView(this); 
tv1.setText("Header 1"); 
TextView tv2 = new TextView(this); 
tv2.setText("Header 2"); 
TextView tv3 = new TextView(this); 
tv3.setText("Header 3"); 

SectionedMergeAdapter adapter = new SectionedMergeAdapter(); 

adapter.addSection(new SectionedMergeAdapter.Section(tv1, adapter1)); 
adapter.addSection(new SectionedMergeAdapter.Section(tv2, adapter2)); 
adapter.addSection(new SectionedMergeAdapter.Section(tv3, adapter3)); 

listView.setAdapter(adapter); 
Powiązane problemy