1. ホーム
  2. android

[解決済み] SpanSizeLookupを使用してGridLayoutManagerのアイテムのスパンを設定する

2022-12-31 22:04:47

質問

セクションヘッダーを使ったグリッドのようなレイアウトを実現したい。例えば https://github.com/TonicArtos/StickyGridHeaders

今、私がしていること。

mRecyclerView = (RecyclerView) view.findViewById(R.id.grid);
mLayoutManager = new GridLayoutManager(getActivity(), 2);
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                switch(mAdapter.getItemViewType(position)){
                    case MyAdapter.TYPE_HEADER:
                        return 1;
                    case MyAdapter.TYPE_ITEM:
                        return 2;
                    default:
                        return -1;
                }
            }
        });

mRecyclerView.setLayoutManager(mLayoutManager);

現在、通常のアイテムもヘッダーもスパンサイズが1になっています。これを解決するにはどうしたらよいでしょうか?

どのように解決するのですか?

問題は、ヘッダのスパンサイズが2であること、通常のアイテムのスパンサイズが1であることでした。 ということで、正しい実装は

mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                switch(mAdapter.getItemViewType(position)){
                    case MyAdapter.TYPE_HEADER:
                        return 2;
                    case MyAdapter.TYPE_ITEM:
                        return 1;
                    default:
                        return -1;
                }
            }
        });