1

Ich richte Kontakt-Verzeichnis in Abschnitt Recyclerview mit Grid-Layout-Manager, was mein Problem ist, dass Header auch als ein Element in der Spanne festgelegt ist, wenn der Bereich leer ist.Wie man leere Spannweite im GridLayoutManager verwaltet?

Ich habe versucht, die SpanSizeLookup-Methode zu verwenden. Es funktioniert nicht so, wie ich es erwartet hatte.

layoutManager = new GridLayoutManager(getActivity(), 3); 
     layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
      @Override 
      public int getSpanSize(int position) { 
       switch(adapterDocument.getItemViewType(position)){ 
        case SectionedRecyclerViewAdapter.VIEW_TYPE_HEADER: 
         return 3; 

        case SectionedRecyclerViewAdapter.VIEW_TYPE_ITEM_LOADED: 
         return 1; 
        default: 
         return 1; 
       } 
      } 
     }); 

Dies ist, was ich

enter image description here

bekommen Und das ist, was ich wirklich will:

enter image description here

Wie Header in der nächsten Zeile mit voller Breite machen sollte ? Vielen Dank.

Antwort

0

es etwas mit Ihrem Code ist, ich den Code in onCreateView von Example1 geändert:

sectionAdapter = new SectionedRecyclerViewAdapter(); 

    for(char alphabet = 'A'; alphabet <= 'Z';alphabet++) { 
     List<String> contacts = getContactsWithLetter(alphabet); 

     if (alphabet == 'B' || alphabet == 'D') { 
      contacts = Collections.emptyList(); 
     } 

     if (contacts.size() > 0) { 
      sectionAdapter.addSection(new ContactsSection(String.valueOf(alphabet), contacts)); 
     } 
    } 

    RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview); 
    GridLayoutManager glm = new GridLayoutManager(getContext(), 3); 
    glm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      switch(sectionAdapter.getSectionItemViewType(position)) { 
       case SectionedRecyclerViewAdapter.VIEW_TYPE_HEADER: 
        return 3; 
       default: 
        return 1; 
      } 
     } 
    }); 
    recyclerView.setLayoutManager(glm); 
    recyclerView.setAdapter(sectionAdapter); 

und es funktioniert gut, das ist das Ergebnis:

result

Verwandte Themen