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

あなたのコードを持つものがあるが、私はExample1からのonCreateViewにコードを変更:

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

関連する問題