質問編集履歴

4

内容の修正

2020/09/18 18:18

投稿

karin10
karin10

スコア34

test CHANGED
File without changes
test CHANGED
@@ -26,15 +26,17 @@
26
26
 
27
27
 
28
28
 
29
+
30
+
31
+
32
+
29
- **RegistActivity.java**
33
+ **MainActivity.java**
30
-
34
+
31
- ```
35
+ ```
32
-
36
+
33
- public class RegistActivity extends Activity {
37
+ public class MainActivity extends AppCompatActivity {
34
-
35
-
36
-
37
- private MySQLiteOpenHelper helper; //MySQLiteOpenHelperクラス
38
+
39
+
38
40
 
39
41
  @Override
40
42
 
@@ -44,205 +46,117 @@
44
46
 
45
47
 
46
48
 
47
- //activity_regist.xml作成した内容を画面に表示
49
+ //activity_mainのレイアウトをContentView設定
48
-
50
+
49
- setContentView(R.layout.activity_regist);
51
+ setContentView(R.layout.activity_main);
50
-
51
-
52
-
53
- //MySQLiteOpenHelperクラスのオブジェクトを作成
52
+
54
-
55
- helper = new MySQLiteOpenHelper(this);
53
+
56
-
57
- //ユーザー名入力用EditTextのオブジェクトを取得
54
+
58
-
59
- EditText useridForm = findViewById(R.id.useridForm);
60
-
61
- //目的選択用Spinnerのオブジェクトを取得
62
-
63
- Spinner spinner = findViewById(R.id.spinnerPurpose);
64
-
65
- //性別選択用Spinnerのオブジェクトを取得
66
-
67
- Spinner spinner1 = findViewById(R.id.spinnerSex);
68
-
69
- //年齢入力用EditTextのオブジェクトを取得
70
-
71
- EditText ageForm = findViewById(R.id.ageForm);
72
-
73
- //体重入力用EditTextのオブジェクトを取得
74
-
75
- EditText weightForm = findViewById(R.id.weightForm);
76
-
77
- //身長入力用EditTextのオブジェクトを取得
78
-
79
- EditText heightForm = findViewById(R.id.heightForm);
80
-
81
- //活動レベル選択用Spinnerのオブジェクトを取得
55
+ // activity_main内のregistButtonを取得
82
-
83
- Spinner spinner2 = findViewById(R.id.活動レベルForm);
56
+
84
-
85
-
86
-
87
- // 登録ボタン
88
-
89
- Button returnButton = findViewById(R.id.registButton);
57
+ Button goRegistButton = findViewById(R.id.regist);
58
+
90
-
59
+ //ボタンがクリックされた時の処理を追加
60
+
91
- returnButton.setOnClickListener(new View.OnClickListener() {
61
+ goRegistButton.setOnClickListener(new View.OnClickListener() {
92
62
 
93
63
  @Override
94
64
 
95
65
  public void onClick(View view2) {
96
66
 
97
-
98
-
99
- //Intentクラスオブジェトを生成
67
+ //Intentを利用して他ティビティに遷移する
68
+
100
-
69
+ Intent intent = new Intent(MainActivity.this, RegistActivity.class);
70
+
101
- Intent intent = new Intent();
71
+ startActivity(intent);
102
-
103
- int id = view2.getId();
72
+
104
-
105
- switch (id) {
106
-
107
- case R.id.registButton ://[登録]ボタンを押したとき
73
+ Product product = null; //登録情報
108
-
74
+
109
- if (registRecord()) { //登録成功
75
+ int requestCode = 0; //リクエストコード
110
-
111
- //インテントに文字列「登録しました」を設定
112
-
113
- intent.putExtra("SUCCESS_MESSAGE", "登録しました");
114
-
115
- //結果 (RESULT_OK、 1Intent) を設定
116
-
117
- setResult(RESULT_OK, intent);
118
-
119
- } else { //登録失敗
120
-
121
- //インテントに文字列「失敗しました」を設定
122
-
123
- intent.putExtra("CANCELLED_MESSAGE", "登録に失敗しました");
124
-
125
- //結果 (RESULT_CANSELED、 Intent) を設定
126
-
127
- setResult(RESULT_CANCELED, intent);
128
-
129
- }
130
-
131
- break;
132
-
133
- }
134
-
135
- RegistActivity.this.finish();
136
76
 
137
77
  }
138
78
 
139
79
  });
140
80
 
141
- }
142
-
143
-
144
-
145
- private boolean registRecord() {
146
-
147
- //SQLiteDatabaseクラスを取得(書き込み用)
148
-
149
- SQLiteDatabase db = helper.getWritableDatabase();
150
-
151
- EditText useridForm = this.findViewById(R.id.useridForm);
152
-
153
- EditText ageForm = this.findViewById(R.id.ageForm);
154
-
155
- EditText weightForm = this.findViewById(R.id.weightForm);
156
-
157
- EditText heightForm = this.findViewById(R.id.heightForm);
158
-
159
-
160
-
161
- // Spinnerオブジェクトを取得
162
-
163
- Spinner spinner = findViewById(R.id.spinnerSex);
164
-
165
- Spinner spinner1 = findViewById(R.id.活動レベルForm);
166
-
167
- Spinner spinner2 = findViewById(R.id.spinnerPurpose);
168
-
169
- // 選択されていアイテムを取得
170
-
171
- String item = (String) spinner.getSelectedItem();
172
-
173
- String item1 = (String) spinner1.getSelectedItem();
174
-
175
- String item2 = (String) spinner2.getSelectedItem();
176
-
177
-
178
-
179
- String strUserId;
180
-
181
- strUserId = useridForm.getText().toString();
182
-
183
- String strAge;
184
-
185
- strAge = ageForm.getText().toString();
186
-
187
- String strWeight;
188
-
189
- strWeight = weightForm.getText().toString();
190
-
191
- String strHeight;
192
-
193
- strHeight = heightForm.getText().toString();
194
-
195
-
196
-
197
-
198
-
199
- double age, weight, height;
200
-
201
- age = Double.parseDouble(strAge);
202
-
203
- weight = Double.parseDouble(strWeight);
204
-
205
- height = Double.parseDouble(strHeight);
206
-
207
-
208
-
209
- //Productsテーブルに登録するレコードの設定準備
210
-
211
- ContentValues value = new ContentValues();
212
-
213
- value.put("name", strUserId);
214
-
215
- value.put("purpose", item2);
216
-
217
- value.put("sex", item);
218
-
219
- value.put("age", age);
220
-
221
- value.put("weight", weight);
222
-
223
- value.put("height", height);
224
-
225
- value.put("activityLevel", item1);
226
-
227
-
228
-
229
- //Productsテーブルに登録
230
-
231
- boolean judge = db.insert("Products", null, value) != -1 ? true : false;
232
-
233
-
234
-
235
- //データベースをクローズ
236
-
237
- db.close();
238
-
239
-
240
-
241
- //登録結果情報を返す
242
-
243
- return judge;
244
-
245
- }
81
+ }
82
+
83
+
84
+
85
+ @Override
86
+
87
+ protected void onResume(){
88
+
89
+ super.onResume();
90
+
91
+ //登録情報格納用配列productsを生成
92
+
93
+ products = new ArrayList<Product>();
94
+
95
+ //SQLiteDatabaseクラスを取得
96
+
97
+ SQLiteDatabase db = helper.getReadableDatabase();
98
+
99
+ //Productsテーブルからデータを取得する列を設定
100
+
101
+ String[] columns = {"id", "name", "purpose", "sex", "age", "age", "weight", "height", "activityLevel"} ;
102
+
103
+ //Productsrテーブルからレコードを取得
104
+
105
+ Cursor cursor = db.query("Products", columns, null, null, null, null, null);
106
+
107
+
108
+
109
+ //レコードがあ間繰り返し処理
110
+
111
+ while(((Cursor) cursor).moveToNext()){
112
+
113
+ int id = cursor.getInt(0);
114
+
115
+ String name = cursor.getString(1);
116
+
117
+ String purpose = cursor.getString(2);
118
+
119
+ String sex = cursor.getString(3);
120
+
121
+ int age = cursor.getInt(4);
122
+
123
+ double weight = cursor.getDouble(5);
124
+
125
+ double height = cursor.getDouble(6);
126
+
127
+ String activityLevel = cursor.getString(7);
128
+
129
+
130
+
131
+ //配列に登録情報を格納
132
+
133
+ products.add(
134
+
135
+ new Product(id, name, purpose, sex, age, weight, height, activityLevel)
136
+
137
+ );
138
+
139
+ }
140
+
141
+ //TextViewに表示させる値の取得と設定
142
+
143
+ String[] items = new String[products.size()];
144
+
145
+
146
+
147
+ for(int i = 0; i < products.size(); i++) {
148
+
149
+ Product product = products.get(i);
150
+
151
+ items[i] = product.getName();
152
+
153
+ }
154
+
155
+
156
+
157
+ }
158
+
159
+
246
160
 
247
161
  }
248
162
 
@@ -250,127 +164,71 @@
250
164
 
251
165
 
252
166
 
253
- **MainActivity.java**
254
-
255
- ```
256
-
257
- public class MainActivity extends AppCompatActivity {
258
-
259
-
260
-
261
- @Override
262
-
263
- protected void onCreate(Bundle savedInstanceState) {
264
-
265
- super.onCreate(savedInstanceState);
266
-
267
-
268
-
269
- //activity_mainのレイアウトをContentViewに設定
270
-
271
- setContentView(R.layout.activity_main);
272
-
273
-
274
-
275
- // activity_main内のregistButtonを取得
276
-
277
- Button goRegistButton = findViewById(R.id.regist);
278
-
279
- //タンがクリックされた時処理追加
280
-
281
- goRegistButton.setOnClickListener(new View.OnClickListener() {
282
-
283
- @Override
284
-
285
- public void onClick(View view2) {
286
-
287
- //Intentを利用して他のアクティビティに遷移する
288
-
289
- Intent intent = new Intent(MainActivity.this, RegistActivity.class);
290
-
291
- startActivity(intent);
292
-
293
- Product product = null; //登録情報
294
-
295
- int requestCode = 0; //リクエストコード
296
-
297
- }
298
-
299
- });
300
-
301
- }
302
-
303
-
304
-
305
- @Override
306
-
307
- protected void onResume(){
308
-
309
- super.onResume();
310
-
311
- //登録情報格納用配列productsを生成
312
-
313
- products = new ArrayList<Product>();
314
-
315
- //SQLiteDatabaseクラスを取得
316
-
317
- SQLiteDatabase db = helper.getReadableDatabase();
318
-
319
- //Productsテーブルからデータを取得する列を設定
320
-
321
- String[] columns = {"id", "name", "purpose", "sex", "age", "age", "weight", "height", "activityLevel"} ;
322
-
323
- //Productsrテーブルからレコードを取得
324
-
325
- Cursor cursor = db.query("Products", columns, null, null, null, null, null);
326
-
327
-
328
-
329
- //レコードがある間繰り返し処理
330
-
331
- while(((Cursor) cursor).moveToNext()){
332
-
333
- int id = cursor.getInt(0);
334
-
335
- String name = cursor.getString(1);
336
-
337
- String purpose = cursor.getString(2);
338
-
339
- String sex = cursor.getString(3);
340
-
341
- int age = cursor.getInt(4);
342
-
343
- double weight = cursor.getDouble(5);
344
-
345
- double height = cursor.getDouble(6);
346
-
347
- String activityLevel = cursor.getString(7);
348
-
349
-
350
-
351
- //配列に登録情報を格納
352
-
353
- products.add(
354
-
355
- new Product(id, name, purpose, sex, age, weight, height, activityLevel)
356
-
357
- );
358
-
359
- }
360
-
361
- //TextViewに表示させる値の取得と設定
362
-
363
- String[] items = new String[products.size()];
364
-
365
-
366
-
367
- for(int i = 0; i < products.size(); i++) {
368
-
369
- Product product = products.get(i);
370
-
371
- items[i] = product.getName();
372
-
373
- }
167
+ **MySQLiteOpenHelper.java**
168
+
169
+ ```
170
+
171
+ public class MySQLiteOpenHelper extends SQLiteOpenHelper {
172
+
173
+ private static String DB_NAME = "sqlite1"; // DB名
174
+
175
+ private static int DB_VERSION = 1; // DBのVersion
176
+
177
+
178
+
179
+ // コンストラクタ
180
+
181
+ // CREATE用のSQLを取得する
182
+
183
+ public MySQLiteOpenHelper(Context context){
184
+
185
+ super(context, DB_NAME, null, DB_VERSION);
186
+
187
+ }
188
+
189
+
190
+
191
+ // DBが存在しない状態でOpenすると、onCreateがコールされる
192
+
193
+ // 新規作成されたDBのインスタン付与されで、テーブル作成する。
194
+
195
+ @Override
196
+
197
+ public void onCreate(SQLiteDatabase db) {
198
+
199
+ //テーブルの作成用SQL文の設定
200
+
201
+ String sql = "CREATE TABLE Prpducts" ;
202
+
203
+ sql += " id INTEGER PRIMARY KEY AUTOINCREMENT" ;
204
+
205
+ sql += "name TEXT NOT NULL" ;
206
+
207
+ sql += "purpose TEXT NOT NULL" ;
208
+
209
+ sql += "sex TEXt NOT NULL" ;
210
+
211
+ sql += "age INTEGER NOT NULL" ;
212
+
213
+ sql += "weight INTEGER NOT NULL" ;
214
+
215
+ sql += "height INTEGER NOT NULL";
216
+
217
+ sql += "activityLevel TEXT NOT NULL";
218
+
219
+
220
+
221
+ //テーブル作成用SQL文を実行
222
+
223
+ db.execSQL(sql) ;
224
+
225
+ }
226
+
227
+
228
+
229
+ @Override
230
+
231
+ public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
374
232
 
375
233
 
376
234
 
@@ -384,84 +242,6 @@
384
242
 
385
243
 
386
244
 
387
- **MySQLiteOpenHelper.java**
388
-
389
- ```
390
-
391
- public class MySQLiteOpenHelper extends SQLiteOpenHelper {
392
-
393
- private static String DB_NAME = "sqlite1"; // DB名
394
-
395
- private static int DB_VERSION = 1; // DBのVersion
396
-
397
-
398
-
399
- // コンストラクタ
400
-
401
- // CREATE用のSQLを取得する
402
-
403
- public MySQLiteOpenHelper(Context context){
404
-
405
- super(context, DB_NAME, null, DB_VERSION);
406
-
407
- }
408
-
409
-
410
-
411
- // DBが存在しない状態でOpenすると、onCreateがコールされる
412
-
413
- // 新規作成されたDBのインスタンスが付与されるので、テーブルを作成する。
414
-
415
- @Override
416
-
417
- public void onCreate(SQLiteDatabase db) {
418
-
419
- //テーブルの作成用SQL文の設定
420
-
421
- String sql = "CREATE TABLE Prpducts" ;
422
-
423
- sql += " id INTEGER PRIMARY KEY AUTOINCREMENT" ;
424
-
425
- sql += "name TEXT NOT NULL" ;
426
-
427
- sql += "purpose TEXT NOT NULL" ;
428
-
429
- sql += "sex TEXt NOT NULL" ;
430
-
431
- sql += "age INTEGER NOT NULL" ;
432
-
433
- sql += "weight INTEGER NOT NULL" ;
434
-
435
- sql += "height INTEGER NOT NULL";
436
-
437
- sql += "activityLevel TEXT NOT NULL";
438
-
439
-
440
-
441
- //テーブル作成用SQL文を実行
442
-
443
- db.execSQL(sql) ;
444
-
445
- }
446
-
447
-
448
-
449
- @Override
450
-
451
- public void onUpgrade(SQLiteDatabase sqLiteDatabase, int oldVersion, int newVersion) {
452
-
453
-
454
-
455
- }
456
-
457
-
458
-
459
- }
460
-
461
- ```
462
-
463
-
464
-
465
245
  [1]: https://i.stack.imgur.com/a0eMV.png
466
246
 
467
247
  [2]: https://i.stack.imgur.com/dbgs6.png

3

タイトルの修正

2020/09/18 18:18

投稿

karin10
karin10

スコア34

test CHANGED
@@ -1 +1 @@
1
- SQliteに保存したデータを1だけ抽出させる方法
1
+ SQliteに保存したデータを1だけ抽出させる方法
test CHANGED
File without changes

2

タイトルの修正

2020/09/18 17:51

投稿

karin10
karin10

スコア34

test CHANGED
@@ -1 +1 @@
1
- SQliteに保存したデータをtextviewに表示させる方法
1
+ SQliteに保存したデータを1行だけ抽出させる方法
test CHANGED
File without changes

1

画像の追加

2020/09/18 17:49

投稿

karin10
karin10

スコア34

test CHANGED
File without changes
test CHANGED
@@ -8,21 +8,17 @@
8
8
 
9
9
  ### 分からないこと
10
10
 
11
+
12
+
11
13
  複数のtextviewにデータベースの各行のデータを分けて表示させる方法が調べてもわかりませんでした。
12
14
 
15
+
16
+
13
17
  ---
14
18
 
15
-
16
-
17
- **activityRegist**
18
-
19
- [![activityRegist][1]][1]
20
-
21
-
22
-
23
- **activityMain**
24
-
25
- [![activityMain][2]][2]
19
+ ![activityMain](219fc26a9f6b0780641a0e1257f849a2.png)
20
+
21
+ ![activityRegist](4a4c8f09a428c53aab77ff6f0bc574ca.png)
26
22
 
27
23
 
28
24