回答編集履歴

2

enum使用

2019/01/19 13:26

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -10,7 +10,15 @@
10
10
 
11
11
  long _id; //getItemId用
12
12
 
13
- int viewType; //getItemViewType用
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 = 0; //'タイトル' タイプ
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 = 1; //'データ' タイプ
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<=100; 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 "+(i+1), "test");
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 2;
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
- ビュータイプ数字(0,1)や件数(2)固定に enum 等で定義たりしま.
207
+ Item 種類がもっとあって, でも表示するレイアウト使いまわる場合等は, View 関係を Item から ViewTypes に移てもいいかもせん.

1

文言の修正とサンプルの追加

2019/01/19 13:26

投稿

jimbe
jimbe

スコア12646

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- タイトルとデータ2つの場合,タイトルとデータの両方をあらわす Item型を定義し
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
- ータイプの数字(0,1)や件数(2)は固定にせず enum 等で定義したりします.
197
+ ビュータイプの数字(0,1)や件数(2)は固定にせず enum 等で定義したりします.