1

我正在使用網格佈局管理器設置recyclerview部分的聯繫目錄,我的問題是如果跨度爲空,那麼標題也被設置爲跨度中的項目。如何管理GridLayoutManager中的空跨度?

我試過使用SpanSizeLookup方法。它沒有按我的預期工作。

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; 
       } 
      } 
     }); 

這是我得到

enter image description here

這是我真正想要的:

enter image description here

如何使頭應與全寬下一行?謝謝。

回答

0

有一些與你的代碼,我改變了代碼onCreateViewExample1到:

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); 

和它的正常工作,這是結果:

result