回答編集履歴
2
リンク修正
answer
CHANGED
@@ -70,4 +70,4 @@
|
|
70
70
|
}
|
71
71
|
```
|
72
72
|
|
73
|
-
あとは普通の RecyclerView ですね。見出しと項目はそれぞれ [
|
73
|
+
あとは普通の RecyclerView ですね。見出しと項目はそれぞれ [layout_header](https://github.com/takapro/SectionGrid/blob/master/app/src/main/res/layout/layout_header.xml) と [layout_item](https://github.com/takapro/SectionGrid/blob/master/app/src/main/res/layout/layout_item.xml) で作ってますので、必要に応じて修正してください。
|
1
リンク追加
answer
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
ListView よりも RecyclerView と GridLayoutManager を組み合わせて使った方がいいと思います。
|
2
2
|
[サンプルプロジェクト](https://github.com/takapro/SectionGrid) を作ってみたのでご覧ください。以下、解説します。
|
3
3
|
|
4
|
-
まず MainActivity より、
|
4
|
+
まず [MainActivity](https://github.com/takapro/SectionGrid/blob/master/app/src/main/java/com/example/sectiongrid/MainActivity.java) より、
|
5
5
|
|
6
6
|
```java
|
7
7
|
List<String> sectionTitles = new ArrayList<>();
|
@@ -28,7 +28,7 @@
|
|
28
28
|
GridLayoutManager というのを使うと横にいくつ項目を並べるかを指定できます。また、SpanSizeLookup を設定すると、項目ごとの横幅を指定できますので、見出しの場合は横いっぱいに表示するようにしています。
|
29
29
|
参考: [android - RecyclerView GridLayoutManager with full width header - Stack Overflow](https://stackoverflow.com/questions/37642869/recyclerview-gridlayoutmanager-with-full-width-header)
|
30
30
|
|
31
|
-
次に SectionGridAdapter ですが、RecyclerView の Adapter は (某 iOS の TableView と違って) 単なる 1 次元配列を想定しているので、例えば以下のようなデータの場合、まず getItemCount で合計項目数 (count = 9) を計算する必要があります。また、Adapter のメソッドは 0 〜 count - 1 の position の値を使って呼ばれるので、それがどのセクションの何番目の項目かを getSectionItemIndex で計算しています。
|
31
|
+
次に [SectionGridAdapter](https://github.com/takapro/SectionGrid/blob/master/app/src/main/java/com/example/sectiongrid/SectionGridAdapter.java) ですが、RecyclerView の Adapter は (某 iOS の TableView と違って) 単なる 1 次元配列を想定しているので、例えば以下のようなデータの場合、まず getItemCount で合計項目数 (count = 9) を計算する必要があります。また、Adapter のメソッドは 0 〜 count - 1 の position の値を使って呼ばれるので、それがどのセクションの何番目の項目かを getSectionItemIndex で計算しています。
|
32
32
|
|
33
33
|
```
|
34
34
|
├── Section 1 position = 0 index = [0]
|
@@ -70,4 +70,4 @@
|
|
70
70
|
}
|
71
71
|
```
|
72
72
|
|
73
|
-
あとは普通の RecyclerView ですね。見出しと項目はそれぞれ layout_title と layout_item で作ってますので、必要に応じて修正してください。
|
73
|
+
あとは普通の RecyclerView ですね。見出しと項目はそれぞれ [layout_title](https://github.com/takapro/SectionGrid/blob/master/app/src/main/res/layout/layout_title.xml) と [layout_item](https://github.com/takapro/SectionGrid/blob/master/app/src/main/res/layout/layout_item.xml) で作ってますので、必要に応じて修正してください。
|