回答編集履歴
2
enum使用
test
CHANGED
@@ -10,7 +10,15 @@
|
|
10
10
|
|
11
11
|
long _id; //getItemId用
|
12
12
|
|
13
|
-
i
|
13
|
+
ViewTypes viewType; //getItemViewType用
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
enum ViewTypes {
|
18
|
+
|
19
|
+
TITLE, DATA
|
20
|
+
|
21
|
+
}
|
14
22
|
|
15
23
|
|
16
24
|
|
@@ -32,7 +40,7 @@
|
|
32
40
|
|
33
41
|
TitleItem(String title) {
|
34
42
|
|
35
|
-
viewType =
|
43
|
+
viewType = ViewTypes.TITLE; //'タイトル' タイプ
|
36
44
|
|
37
45
|
this.title = title;
|
38
46
|
|
@@ -80,7 +88,7 @@
|
|
80
88
|
|
81
89
|
DataItem(String data1, String data2) {
|
82
90
|
|
83
|
-
viewType =
|
91
|
+
viewType = ViewTypes.DATA; //'データ' タイプ
|
84
92
|
|
85
93
|
this.data1 = data1;
|
86
94
|
|
@@ -136,7 +144,9 @@
|
|
136
144
|
|
137
145
|
private List<Item> list = new ArrayList<Item>();
|
138
146
|
|
147
|
+
|
148
|
+
|
139
|
-
for(int i=0; i<
|
149
|
+
for(int i=0; i<100; i++) {
|
140
150
|
|
141
151
|
if(i%5 == 0) {
|
142
152
|
|
@@ -144,7 +154,7 @@
|
|
144
154
|
|
145
155
|
}
|
146
156
|
|
147
|
-
list.add(new DataItem("data "+
|
157
|
+
list.add(new DataItem("data "+i, "test");
|
148
158
|
|
149
159
|
}
|
150
160
|
|
@@ -158,7 +168,7 @@
|
|
158
168
|
|
159
169
|
public int getViewTypeCount() {
|
160
170
|
|
161
|
-
return
|
171
|
+
return Item.ViewTypes.values().length; //Item.ViewTypesに定義された件数
|
162
172
|
|
163
173
|
}
|
164
174
|
|
@@ -166,7 +176,7 @@
|
|
166
176
|
|
167
177
|
public int getItemViewType(int position) {
|
168
178
|
|
169
|
-
return list.get(position).viewType;
|
179
|
+
return list.get(position).viewType.ordinal(); //enumで自動で付けられる番号
|
170
180
|
|
171
181
|
}
|
172
182
|
|
@@ -194,4 +204,4 @@
|
|
194
204
|
|
195
205
|
|
196
206
|
|
197
|
-
|
207
|
+
Item の種類がもっとあって, でも表示するレイアウトは使いまわせる場合等は, View 関係を Item から ViewTypes に移してもいいかもしれません.
|
1
文言の修正とサンプルの追加
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
まず共通の Item 型を定義し
|
6
6
|
|
7
7
|
```Java
|
8
8
|
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
```
|
24
24
|
|
25
|
-
継承して
|
25
|
+
種類毎に継承してクラスを作ります. (以下はタイトルとデータの場合)
|
26
26
|
|
27
27
|
```Java
|
28
28
|
|
@@ -132,13 +132,27 @@
|
|
132
132
|
|
133
133
|
リストビュー用のアダプタはItemのリストを保持しておき、それにTitleItemやDataItemを入れておきます.
|
134
134
|
|
135
|
-
また, ViewTypeに関するメソッドを2つOverwriteし, getViewでは各Itemのメソッドを呼びます.
|
136
|
-
|
137
135
|
```Java
|
138
136
|
|
139
137
|
private List<Item> list = new ArrayList<Item>();
|
140
138
|
|
139
|
+
for(int i=0; i<=100; i++) {
|
141
140
|
|
141
|
+
if(i%5 == 0) {
|
142
|
+
|
143
|
+
list.add(new TitleItem("group "+(i/5+1)));
|
144
|
+
|
145
|
+
}
|
146
|
+
|
147
|
+
list.add(new DataItem("data "+(i+1), "test");
|
148
|
+
|
149
|
+
}
|
150
|
+
|
151
|
+
```
|
152
|
+
|
153
|
+
また, ViewTypeに関するメソッドを2つOverwriteし, getViewでは各Itemのメソッドを呼びます.
|
154
|
+
|
155
|
+
```Java
|
142
156
|
|
143
157
|
@Override
|
144
158
|
|
@@ -180,4 +194,4 @@
|
|
180
194
|
|
181
195
|
|
182
196
|
|
183
|
-
|
197
|
+
ビュータイプの数字(0,1)や件数(2)は固定にせず enum 等で定義したりします.
|