2

我正在使用网格布局管理器在部分 recyclerview 中设置联系人目录,我的问题是如果跨度为空,标题也被设置为跨度中的一个项目。

我尝试使用 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;
                }
            }
        });

这就是我得到的

在此处输入图像描述

这就是我真正想要的:

在此处输入图像描述

如何使标题应该在下一行全宽?谢谢你。

4

1 回答 1

2

您的代码有些问题,我将代码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);

它工作正常,结果如下:

结果

于 2017-11-17T11:22:57.913 回答