質問編集履歴

9

コードの追加

2017/04/19 14:27

投稿

edoooooo
edoooooo

スコア476

test CHANGED
@@ -1 +1 @@
1
- todoリストで一つのListが繰り返し表示されます。mLst.clearの位置が問題ですか?
1
+ todoリストでSQLで、アップデートするとリスト全て、同じ項目の繰り返しになります。
test CHANGED
@@ -8,10 +8,6 @@
8
8
 
9
9
 
10
10
 
11
- mList.clearがコードの中にあるのですが、表示されるListは、全部同じもので、コード編集ボタンをおし、updateしようとすると、updateされます。
12
-
13
- 一方、mList.clearしないと、表示されるListは、何種類かのListが表示されますが、コード編集ボタンを押しupdateしようとしても、updateは、されません。
14
-
15
11
 
16
12
 
17
13
  この下のコードは、メモをデータベース(SQLite)から取得し、mapに値を入れて、それを、ListViewで表示しているコードです。

8

説明の追加

2017/04/19 14:27

投稿

edoooooo
edoooooo

スコア476

test CHANGED
@@ -1 +1 @@
1
- Androidでtodoリストに追加すると、全てリスト追加た物にかわってしいます。
1
+ todoリストで一つList繰り返表示されます。mLst.clearの位置が問題ですか?
test CHANGED
@@ -1,8 +1,16 @@
1
1
  AndroidでTodoリストを作ったのですが、
2
2
 
3
+ todoリストで一つのListが繰り返し表示されます
4
+
3
- 新規登録で、リストに追加すると全てのメモの一覧が、
5
+ 新規登録でlistを追加した場合も編集でリストをupdateした場合も
4
-
6
+
5
- その、新しく追加した物へと代わり、一つのtodoリストが何個表示されるいうことにってしいます。
7
+ Listが一つのList(同じ情報のの)のみの繰り返しとなます。
8
+
9
+
10
+
11
+ mList.clearがコードの中にあるのですが、表示されるListは、全部同じもので、コード編集ボタンをおし、updateしようとすると、updateされます。
12
+
13
+ 一方、mList.clearしないと、表示されるListは、何種類かのListが表示されますが、コード編集ボタンを押しupdateしようとしても、updateは、されません。
6
14
 
7
15
 
8
16
 
@@ -28,7 +36,7 @@
28
36
 
29
37
  List<Map<String, String>> mList = null;
30
38
 
31
- /////////////////////////////////////////////////////ここに宣言されているmList偶然じゃないな
39
+ /////////////////////////////////////////////////////ここに宣言されているmListが原因?
32
40
 
33
41
 
34
42
 
@@ -112,7 +120,7 @@
112
120
 
113
121
 
114
122
 
115
- ///////////////////////////////////////////////この上でリストを表示してんじゃん、データベースにデータがあるから、表示がミスってんじゃん
123
+ ///////////////////////////////////////////////この上でリストを表示して、データベースにデータがあるから、表示がまちがえ
116
124
 
117
125
 
118
126
 
@@ -132,13 +140,9 @@
132
140
 
133
141
 
134
142
 
135
-
136
-
137
143
  // 編集画面に渡すデータをセットし、表示
138
144
 
139
- //この下は、ファイルとは関係ないonResume()からやる
140
-
141
- Intent intent = new Intent(MainActivity.this, EditActivity.class);
145
+ Intent intent = new Intent(MainActivity.this, EditActivity.class);
142
146
 
143
147
 
144
148
 
@@ -194,15 +198,11 @@
194
198
 
195
199
  if(c.moveToFirst()) {
196
200
 
197
- //こんな感じで使ってるってことはあれも間違えて大丈夫だと思う?
198
-
199
201
  String idd = c.getString(c.getColumnIndex(UserContract.Users._ID));
200
202
 
201
203
 
202
204
 
203
- System.out.println("iddの表示やーーーーーーーーーーーーーーーー:"+idd);
204
-
205
- //表示できてる
205
+ //表示できてる
206
206
 
207
207
 
208
208
 
@@ -268,25 +268,7 @@
268
268
 
269
269
 
270
270
 
271
- /**
271
+
272
-
273
- for (int i=0; i<files.length; i++) {
274
-
275
- String fileName = files[i].getName();
276
-
277
- if (files[i].isFile() && fileName.endsWith(".txt")) {
278
-
279
-
280
-
281
- データベースのデータを全取得してそれをリストに入れるのにこのようなfor分は、必要ではないのか?
282
-
283
- 多分whileでやってるから大丈夫
284
-
285
- **/
286
-
287
-
288
-
289
- /////////////////// //String 二変更
290
272
 
291
273
  String id=null;
292
274
 
@@ -308,9 +290,7 @@
308
290
 
309
291
 
310
292
 
311
- //もうわから無いから、selectをそれぞれ分けて、それぞれをputしていく
293
+
312
-
313
- /////////////////・・・・・・・・・・・・・・・ダメだったら上のようにする
314
294
 
315
295
 
316
296
 
@@ -364,7 +344,7 @@
364
344
 
365
345
 
366
346
 
367
- //////////////////////////リストの表示が悪いんじゃん?それかこの上のコード map.putのやつ
347
+ //////////////////////////リストの表示が悪い?それかこの上のコード map.putのやつ
368
348
 
369
349
 
370
350
 
@@ -394,6 +374,4 @@
394
374
 
395
375
 
396
376
 
397
-
398
-
399
377
  ```

7

コードを新しいものにしました。

2017/04/19 14:11

投稿

edoooooo
edoooooo

スコア476

test CHANGED
File without changes
test CHANGED
@@ -16,6 +16,38 @@
16
16
 
17
17
  public class MainActivity extends AppCompatActivity {
18
18
 
19
+ // ListView 用アダプタ
20
+
21
+ SimpleAdapter mAdapter = null;
22
+
23
+
24
+
25
+
26
+
27
+ // ListView に設定するデーた
28
+
29
+ List<Map<String, String>> mList = null;
30
+
31
+ /////////////////////////////////////////////////////ここに宣言されているmList偶然じゃないな
32
+
33
+
34
+
35
+ //新しく追加ListView
36
+
37
+ ListView list=null;
38
+
39
+
40
+
41
+ //質問する前につ以下
42
+
43
+ SQLiteDatabase db=null;
44
+
45
+
46
+
47
+
48
+
49
+
50
+
19
51
 
20
52
 
21
53
  @Override
@@ -38,6 +70,16 @@
38
70
 
39
71
 
40
72
 
73
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ここCREATE_TABLE
74
+
75
+ //db.execSQL(CREATE_TABLE);
76
+
77
+
78
+
79
+
80
+
81
+
82
+
41
83
  ListView list = (ListView) findViewById(R.id.listView);
42
84
 
43
85
  mList = new ArrayList<Map<String, String>>();
@@ -50,20 +92,34 @@
50
92
 
51
93
  mList,
52
94
 
95
+ //独自で定義したlayoutを適応する
96
+
53
- android.R.layout.simple_list_item_2,
97
+ android.R.layout.simple_list_item_2,
54
98
 
55
99
  new String[]{"title", "content", "data"}, //Map側のkey
56
100
 
57
- new int[]{android.R.id.text1, android.R.id.text2, R.id.eTxtData}
101
+ new int[]{android.R.id.text1, android.R.id.text2, R.id.eTxtData} //layout側のTextViewId 表示させたいMapのkey順に合わせる
58
102
 
59
103
  );
60
104
 
61
105
 
62
106
 
107
+ // ListView にアダプターをセット
108
+
63
109
  list.setAdapter(mAdapter);
64
110
 
65
111
 
66
112
 
113
+
114
+
115
+ ///////////////////////////////////////////////この上でリストを表示してんじゃん、データベースにデータがあるから、表示がミスってんじゃん?
116
+
117
+
118
+
119
+
120
+
121
+ // ListView のアイテム選択イベント
122
+
67
123
  list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
68
124
 
69
125
 
@@ -76,7 +132,13 @@
76
132
 
77
133
 
78
134
 
135
+
136
+
137
+ // 編集画面に渡すデータをセットし、表示
138
+
139
+ //この下は、ファイルとは関係ないonResume()からやる
140
+
79
- Intent intent = new Intent(MainActivity.this, EditActivity.class);
141
+ Intent intent = new Intent(MainActivity.this, EditActivity.class);
80
142
 
81
143
 
82
144
 
@@ -96,46 +158,60 @@
96
158
 
97
159
 
98
160
 
161
+ String title1= mList.get(pos).get("title");
162
+
163
+ String content1=mList.get(pos).get("content");
164
+
99
- Cursor c;
165
+ String data1=mList.get(pos).get("data");
100
-
166
+
101
- c=db.query(
167
+ String data2=data1.toString();
102
-
168
+
169
+
170
+
103
- UserContract.Users.TABLE_NAME,
171
+ String table2=UserContract.Users.TABLE_NAME;
104
-
172
+
105
- null,//fields
173
+ //////////////////なぜかCOL_TITLEとかでなくTITLEで取得できる????????????
106
-
107
- null,//where
174
+
108
-
175
+
176
+
109
- null,//where arg ここでは、多分何もせずに、全件取得して、リストに入れる
177
+ String sql="SELECT * FROM " +table2 +
178
+
110
-
179
+ " WHERE TITLE = " +"'"+title1 +"'" +
180
+
181
+ " AND CONTENT ="+ "'"+content1 +"'"+
182
+
183
+ " AND DATA =" +"'"+data2 +"'";
184
+
185
+
186
+
111
- null,//groupBy
187
+ //下のnullは条件の?の奴
112
-
113
- null,//having
188
+
114
-
115
- null,//order by
189
+ Cursor c =db.rawQuery(sql,null);
116
-
117
- null
190
+
118
-
119
- );
191
+
120
-
121
-
122
-
192
+
193
+
194
+
123
- if(c.moveToFirst()) {
195
+ if(c.moveToFirst()) {
196
+
124
-
197
+ //こんな感じで使ってるってことはあれも間違えて大丈夫だと思う?
198
+
125
- Integer idd = c.getInt(UserContract.Users._ID);
199
+ String idd = c.getString(c.getColumnIndex(UserContract.Users._ID));
200
+
201
+
202
+
203
+ System.out.println("iddの表示やーーーーーーーーーーーーーーーー:"+idd);
204
+
205
+ //表示できてる
126
206
 
127
207
 
128
208
 
129
209
  c.close();
130
210
 
131
-
132
-
133
- //ここにデータベースからしゅとくした値をいれる
134
-
135
-
136
-
137
211
  intent.putExtra("ID", idd);
138
212
 
213
+ //ここで IDにせっとし intentを飛ばしてる
214
+
139
215
  }
140
216
 
141
217
 
@@ -184,15 +260,35 @@
184
260
 
185
261
 
186
262
 
187
-
188
-
189
263
  // ListView 用アダプタのデータをクリア
190
264
 
191
265
  mList.clear();
192
266
 
193
-
267
+ /////////////////////////////////////////////////////////このclearがいけないのか?
268
+
269
+
270
+
194
-
271
+ /**
272
+
273
+ for (int i=0; i<files.length; i++) {
274
+
275
+ String fileName = files[i].getName();
276
+
277
+ if (files[i].isFile() && fileName.endsWith(".txt")) {
278
+
279
+
280
+
281
+ データベースのデータを全取得してそれをリストに入れるのにこのようなfor分は、必要ではないのか?
282
+
283
+ 多分whileでやってるから大丈夫
284
+
285
+ **/
286
+
287
+
288
+
289
+ /////////////////// //String 二変更
290
+
195
- String id=null;
291
+ String id=null;
196
292
 
197
293
  String title = null;
198
294
 
@@ -202,33 +298,29 @@
202
298
 
203
299
 
204
300
 
205
- //ここからコピペ
301
+
206
-
207
-
208
-
209
- //これはselect
302
+
210
-
211
- Cursor c;
212
-
213
- c=db.query(
214
-
215
- UserContract.Users.TABLE_NAME,
303
+ String table2=UserContract.Users.TABLE_NAME;
216
-
304
+
217
- null,//fields
305
+ String sql="SELECT * FROM " +table2 ;
218
-
219
- null,//where
306
+
220
-
307
+
308
+
309
+
310
+
221
- null,//where arg ここでは、多何もせずに全件取得して、リストに入れる
311
+ //もうわから無いから、selectをそれぞれけてそれぞれをputしていく
312
+
222
-
313
+ /////////////////・・・・・・・・・・・・・・・ダメだったら上のようにする
314
+
315
+
316
+
223
- null,//groupBy
317
+ //下のnullは条件の?の奴
224
-
225
- null,//having
318
+
226
-
227
- null,//order by
319
+ Cursor c =db.rawQuery(sql,null);
228
-
320
+
321
+
322
+
229
- null
323
+ Log.v("DB_TEST","Count:"+c.getCount());
230
-
231
- );
232
324
 
233
325
 
234
326
 
@@ -236,15 +328,29 @@
236
328
 
237
329
  while(c.moveToNext()){
238
330
 
331
+
332
+
239
-
333
+ //この下のこんな書き方にする必要ある?
334
+
335
+ //だからupdateされ無いんじゃん?わからん
240
336
 
241
337
  title=c.getString(c.getColumnIndex(UserContract.Users.COL_TITLE));
242
338
 
243
- content=c.getString(c.getColumnIndex(UserContract.Users.COL_CONTENT));
339
+ content=c.getString(c.getColumnIndex(UserContract.Users.COL_CONTENT));
244
340
 
245
341
  data=c.getString(c.getColumnIndex(UserContract.Users.COL_DATA));
246
342
 
343
+
344
+
345
+
346
+
247
-
347
+ //このLog.vはデータベースからselectした情報をc.moveToNext()してる奴だから有効
348
+
349
+ //つまりデータベースにはしっかり入力できてるってこと
350
+
351
+ Log.v("DB_TESTここはMainActivity"," id: "+id+ "title: "+title+ " content: "+content+ " data: "+data);
352
+
353
+ //////////////////////////このログを見るといろいろ取得できてるなのに表示は同じもの
248
354
 
249
355
 
250
356
 
@@ -258,310 +364,36 @@
258
364
 
259
365
 
260
366
 
367
+ //////////////////////////リストの表示が悪いんじゃん?それかこの上のコード map.putのやつ
368
+
261
369
 
262
370
 
263
371
  }
264
372
 
265
373
 
266
374
 
267
-
375
+ //ここで、addされたmListをlistViewに表示することをやるためにonCreateのん作業をメソッドで呼ぶ必要?
376
+
377
+
268
378
 
269
379
  c.close();
270
380
 
271
-
272
-
273
381
  db.close();
274
382
 
275
383
 
276
384
 
385
+ // ListView のデータ変更を表示に反映
386
+
277
387
  mAdapter.notifyDataSetChanged();
278
388
 
279
389
  }
280
390
 
281
391
 
282
392
 
283
- }
393
+
394
+
395
+
284
396
 
285
397
 
286
398
 
287
399
  ```
288
-
289
- //EditActivity
290
-
291
-
292
-
293
- ```
294
-
295
-
296
-
297
- public class EditActivity extends AppCompatActivity {
298
-
299
-
300
-
301
-
302
-
303
- // メニュー選択時の処理
304
-
305
- @Override
306
-
307
- public boolean onOptionsItemSelected(MenuItem item) {
308
-
309
-
310
-
311
- //open helper
312
-
313
- //open db memoDBHelperに変更
314
-
315
- MemoDBHelper memoDBHelper = new MemoDBHelper(this);
316
-
317
- SQLiteDatabase db = memoDBHelper.getWritableDatabase();
318
-
319
-
320
-
321
-
322
-
323
- Cursor c = null;
324
-
325
- String title = null;
326
-
327
- String content = null;
328
-
329
- String data = null;
330
-
331
- EditText eTxtTitle = null;
332
-
333
- EditText eTxtContent = null;
334
-
335
- EditText eTxtData = null;
336
-
337
-
338
-
339
- //ここのidにcancelとupdateを入れる
340
-
341
- switch (item.getItemId()) {
342
-
343
- case R.id.action_can:
344
-
345
- //キャンセルが押された場合
346
-
347
- mNotSave = true;
348
-
349
- this.finish();
350
-
351
- break;
352
-
353
-
354
-
355
- case R.id.action_upd:
356
-
357
-
358
-
359
- // タイトル、内容、実行日の追加
360
-
361
- eTxtTitle = (EditText) findViewById(R.id.eTxtTitle);
362
-
363
- eTxtContent = (EditText) findViewById(R.id.eTxtContent);
364
-
365
- eTxtData = (EditText) findViewById(R.id.eTxtData);
366
-
367
- title = eTxtTitle.getText().toString();
368
-
369
- content = eTxtContent.getText().toString();
370
-
371
- data = eTxtData.getText().toString();
372
-
373
-
374
-
375
- Intent intent = getIntent();
376
-
377
- //あえてinsertkに変更
378
-
379
- String insertk = intent.getStringExtra("INSERT");
380
-
381
-
382
-
383
- Integer idd=intent.getIntExtra("ID",0);
384
-
385
- //第二引きううには、初期値を入れるみたい
386
-
387
-
388
-
389
- if (title.isEmpty() || content.isEmpty()) {
390
-
391
- Toast.makeText(this, R.string.msg_destruction, Toast.LENGTH_SHORT).show();
392
-
393
-
394
-
395
- }
396
-
397
-
398
-
399
- if (insertk.length() == 0) {
400
-
401
-
402
-
403
- //ここにinsertkの長さを表す
404
-
405
- Log.v("ああああああああああ","time:"+"+ insertk.length()+ ");
406
-
407
- //updateの時は、ああああああと出るが、
408
-
409
- //アップデートされていない
410
-
411
- try {
412
-
413
-
414
-
415
- ContentValues newData = new ContentValues();
416
-
417
- newData.put(UserContract.Users.COL_DATA, data);
418
-
419
- int updateCount = db.update(
420
-
421
-
422
-
423
- UserContract.Users.TABLE_NAME,
424
-
425
- newData,
426
-
427
- Long.toString(UserContract.Users._ID) +"=" + Long.toString(idd),
428
-
429
- null
430
-
431
- );
432
-
433
-
434
-
435
-
436
-
437
- ContentValues newContent = new ContentValues();
438
-
439
- newContent.put(UserContract.Users.COL_CONTENT, content);
440
-
441
- int updateCount1 = db.update(
442
-
443
-
444
-
445
-
446
-
447
- UserContract.Users.TABLE_NAME,
448
-
449
- newData,
450
-
451
- Long.toString(UserContract.Users._ID) +"=" + Long.toString(idd),
452
-
453
- null
454
-
455
- );
456
-
457
-
458
-
459
- ContentValues newTitle = new ContentValues();
460
-
461
- newTitle.put(UserContract.Users.COL_TITLE, title);
462
-
463
- int updateCount2 = db.update(
464
-
465
-
466
-
467
-
468
-
469
- UserContract.Users.TABLE_NAME,
470
-
471
- newData,
472
-
473
- Long.toString(UserContract.Users._ID) +"=" + Long.toString(idd),
474
-
475
- null
476
-
477
- );
478
-
479
-
480
-
481
- //保存に成功しました。
482
-
483
- Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
484
-
485
- } catch (Exception e) {
486
-
487
- Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
488
-
489
- }
490
-
491
- } else {
492
-
493
-
494
-
495
- Log.v("いいいいいいいいいい","time:"+"+ insertk.length()+ ");
496
-
497
-
498
-
499
- //insertするといいいいと表示されるが、
500
-
501
- //リストは、同じ物となる
502
-
503
- //つまりセレクトがおかしいのではないか?
504
-
505
-
506
-
507
- //これは insert
508
-
509
- // データをtextから取得して表示するコード
510
-
511
-
512
-
513
- try {
514
-
515
- //この下のinsertには、updateのように、textから取得したデータをinsertする
516
-
517
-
518
-
519
- ContentValues newUser = new ContentValues();
520
-
521
- newUser.put(UserContract.Users.COL_TITLE,title);
522
-
523
- newUser.put(UserContract.Users.COL_CONTENT,content);
524
-
525
- newUser.put(UserContract.Users.COL_DATA, data);
526
-
527
- long newId = db.insert(UserContract.Users.TABLE_NAME,
528
-
529
- null,
530
-
531
- newUser
532
-
533
- );
534
-
535
- //close db
536
-
537
-
538
-
539
- Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
540
-
541
- } catch (Exception e) {
542
-
543
- Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
544
-
545
- }
546
-
547
-
548
-
549
- }
550
-
551
-
552
-
553
-
554
-
555
- db.close();
556
-
557
- }
558
-
559
- return super.onOptionsItemSelected(item);
560
-
561
-
562
-
563
- }
564
-
565
- }
566
-
567
- ```

6

コードの更新

2017/04/19 14:00

投稿

edoooooo
edoooooo

スコア476

test CHANGED
File without changes
test CHANGED
@@ -10,31 +10,13 @@
10
10
 
11
11
 
12
12
 
13
- どこが先ほどのミスの原因となっているのでしょうか?
13
+ //MainActivity
14
-
15
- アドバイスをいただけないでしょうか?
16
-
17
- どうぞよろしくお願いします。
18
14
 
19
15
  ```java
20
16
 
21
-
22
-
23
17
  public class MainActivity extends AppCompatActivity {
24
18
 
25
- // ListView 用アダプタ
19
+
26
-
27
- SimpleAdapter mAdapter = null;
28
-
29
- // ListView に設定するデーた
30
-
31
- List<Map<String, String>> mList = null;
32
-
33
- //新しく追加ListView
34
-
35
- ListView list=null;
36
-
37
-
38
20
 
39
21
  @Override
40
22
 
@@ -44,428 +26,542 @@
44
26
 
45
27
  setContentView(R.layout.activity_main);
46
28
 
29
+
30
+
31
+
32
+
33
+ MemoDBHelper memoDBHelper=new MemoDBHelper(this);
34
+
35
+ db=memoDBHelper.getWritableDatabase();
36
+
37
+
38
+
39
+
40
+
41
+ ListView list = (ListView) findViewById(R.id.listView);
42
+
43
+ mList = new ArrayList<Map<String, String>>();
44
+
45
+
46
+
47
+
48
+
49
+ mAdapter = new SimpleAdapter(this,
50
+
51
+ mList,
52
+
53
+ android.R.layout.simple_list_item_2,
54
+
55
+ new String[]{"title", "content", "data"}, //Map側のkey
56
+
57
+ new int[]{android.R.id.text1, android.R.id.text2, R.id.eTxtData}
58
+
59
+ );
60
+
61
+
62
+
63
+ list.setAdapter(mAdapter);
64
+
65
+
66
+
67
+ list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
68
+
69
+
70
+
71
+ @Override
72
+
73
+ public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
74
+
75
+
76
+
77
+
78
+
79
+ Intent intent = new Intent(MainActivity.this, EditActivity.class);
80
+
81
+
82
+
83
+ // //これは編集だから から文字にする
84
+
85
+ intent.putExtra("INSERT","");
86
+
87
+
88
+
89
+ intent.putExtra("TITLE", mList.get(pos).get("title"));
90
+
91
+ intent.putExtra("CONTENT", mList.get(pos).get("content"));
92
+
93
+ intent.putExtra("DATA", mList.get(pos).get("data"));
94
+
95
+
96
+
97
+
98
+
99
+ Cursor c;
100
+
101
+ c=db.query(
102
+
103
+ UserContract.Users.TABLE_NAME,
104
+
105
+ null,//fields
106
+
107
+ null,//where
108
+
109
+ null,//where arg ここでは、多分何もせずに、全件取得して、リストに入れる
110
+
111
+ null,//groupBy
112
+
113
+ null,//having
114
+
115
+ null,//order by
116
+
117
+ null
118
+
119
+ );
120
+
121
+
122
+
123
+ if(c.moveToFirst()) {
124
+
125
+ Integer idd = c.getInt(UserContract.Users._ID);
126
+
127
+
128
+
129
+ c.close();
130
+
131
+
132
+
133
+ //ここにデータベースからしゅとくした値をいれる
134
+
135
+
136
+
137
+ intent.putExtra("ID", idd);
138
+
139
+ }
140
+
141
+
142
+
143
+ startActivity(intent);
144
+
145
+ }
146
+
147
+ });
148
+
149
+
150
+
151
+ // ListView をコンテキストメニューに登録
152
+
153
+ registerForContextMenu(list);
154
+
155
+ }
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+ @Override
168
+
169
+ protected void onResume() {
170
+
171
+ super.onResume();
172
+
173
+
174
+
175
+ //open helper
176
+
177
+ //open db memoDBHelperに変更
178
+
179
+ MemoDBHelper memoDBHelper=new MemoDBHelper(this);
180
+
181
+ SQLiteDatabase db=memoDBHelper.getWritableDatabase();
182
+
183
+
184
+
185
+
186
+
187
+
188
+
189
+ // ListView 用アダプタのデータをクリア
190
+
191
+ mList.clear();
192
+
193
+
194
+
195
+ String id=null;
196
+
197
+ String title = null;
198
+
199
+ String content = null;
200
+
201
+ String data=null;
202
+
203
+
204
+
205
+ //ここからコピペ
206
+
207
+
208
+
209
+ //これはselect
210
+
211
+ Cursor c;
212
+
213
+ c=db.query(
214
+
215
+ UserContract.Users.TABLE_NAME,
216
+
217
+ null,//fields
218
+
219
+ null,//where
220
+
221
+ null,//where arg ここでは、多分何もせずに、全件取得して、リストに入れる
222
+
223
+ null,//groupBy
224
+
225
+ null,//having
226
+
227
+ null,//order by
228
+
229
+ null
230
+
231
+ );
232
+
233
+
234
+
235
+ Map<String, String> map = new HashMap<String, String>();
236
+
237
+ while(c.moveToNext()){
238
+
239
+
240
+
241
+ title=c.getString(c.getColumnIndex(UserContract.Users.COL_TITLE));
242
+
243
+ content=c.getString(c.getColumnIndex(UserContract.Users.COL_CONTENT));
244
+
245
+ data=c.getString(c.getColumnIndex(UserContract.Users.COL_DATA));
246
+
247
+
248
+
249
+
250
+
251
+ map.put("title", title);
252
+
253
+ map.put("content", content);
254
+
255
+ map.put("data",data);
256
+
257
+ mList.add(map);
258
+
259
+
260
+
261
+
262
+
263
+ }
264
+
265
+
266
+
267
+
268
+
269
+ c.close();
270
+
271
+
272
+
273
+ db.close();
274
+
275
+
276
+
277
+ mAdapter.notifyDataSetChanged();
278
+
279
+ }
280
+
281
+
282
+
283
+ }
284
+
285
+
286
+
287
+ ```
288
+
289
+ //EditActivity
290
+
291
+
292
+
293
+ ```
294
+
295
+
296
+
297
+ public class EditActivity extends AppCompatActivity {
298
+
299
+
300
+
301
+
302
+
303
+ // メニュー選択時の処理
304
+
305
+ @Override
306
+
307
+ public boolean onOptionsItemSelected(MenuItem item) {
308
+
309
+
310
+
311
+ //open helper
312
+
313
+ //open db memoDBHelperに変更
314
+
315
+ MemoDBHelper memoDBHelper = new MemoDBHelper(this);
316
+
317
+ SQLiteDatabase db = memoDBHelper.getWritableDatabase();
318
+
319
+
320
+
321
+
322
+
323
+ Cursor c = null;
324
+
325
+ String title = null;
326
+
327
+ String content = null;
328
+
329
+ String data = null;
330
+
331
+ EditText eTxtTitle = null;
332
+
333
+ EditText eTxtContent = null;
334
+
335
+ EditText eTxtData = null;
336
+
337
+
338
+
339
+ //ここのidにcancelとupdateを入れる
340
+
341
+ switch (item.getItemId()) {
342
+
343
+ case R.id.action_can:
344
+
345
+ //キャンセルが押された場合
346
+
347
+ mNotSave = true;
348
+
349
+ this.finish();
350
+
351
+ break;
352
+
353
+
354
+
355
+ case R.id.action_upd:
356
+
47
357
 
48
358
 
49
- //open helper
50
-
51
- MemoDBHelper memoDBHelper=new MemoDBHelper(this);
52
-
53
- SQLiteDatabase db=memoDBHelper.getWritableDatabase();
54
-
55
-
56
-
57
- ListView list = (ListView) findViewById(R.id.listView);
58
-
59
- mList = new ArrayList<Map<String, String>>();
60
-
61
-
62
-
63
-
64
-
65
- mAdapter = new SimpleAdapter(this,
66
-
67
- mList,
68
-
69
- //独自で定義したlayoutを適応する
70
-
71
- android.R.layout.simple_list_item_2,
72
-
73
- new String[]{"title", "content", "data"}, //Map側のkey
74
-
75
- new int[]{android.R.id.text1, android.R.id.text2, R.id.eTxtData} //layout側のTextViewId 表示させたいMapのkey順に合わせる
76
-
77
- );
78
-
79
-
80
-
81
- // ListView にアダプターをセット
82
-
83
- list.setAdapter(mAdapter);
84
-
85
-
86
-
87
- // ListView のアイテム選択イベント
88
-
89
- list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
90
-
91
-
92
-
93
- @Override
94
-
95
- public void onItemClick(
96
-
97
- AdapterView<?> parent, View view, int pos, long id) {
98
-
99
- Intent intent = new Intent(MainActivity.this, EditActivity.class);
100
-
101
-
102
-
103
- intent.putExtra("INSERT","");
104
-
105
- intent.putExtra("TITLE", mList.get(pos).get("title"));
106
-
107
- intent.putExtra("CONTENT", mList.get(pos).get("content"));
108
-
109
- intent.putExtra("DATA", mList.get(pos).get("data"));
110
-
111
-
112
-
113
-
114
-
115
- startActivity(intent);
116
-
117
- }
118
-
119
- });
120
-
121
-
122
-
123
- // ListView をコンテキストメニューに登録
124
-
125
- registerForContextMenu(list);
359
+ // タイトル、内容、実行日の追加
360
+
361
+ eTxtTitle = (EditText) findViewById(R.id.eTxtTitle);
362
+
363
+ eTxtContent = (EditText) findViewById(R.id.eTxtContent);
364
+
365
+ eTxtData = (EditText) findViewById(R.id.eTxtData);
366
+
367
+ title = eTxtTitle.getText().toString();
368
+
369
+ content = eTxtContent.getText().toString();
370
+
371
+ data = eTxtData.getText().toString();
372
+
373
+
374
+
375
+ Intent intent = getIntent();
376
+
377
+ //あえてinsertkに変更
378
+
379
+ String insertk = intent.getStringExtra("INSERT");
380
+
381
+
382
+
383
+ Integer idd=intent.getIntExtra("ID",0);
384
+
385
+ //第二引きううには、初期値を入れるみたい
386
+
387
+
388
+
389
+ if (title.isEmpty() || content.isEmpty()) {
390
+
391
+ Toast.makeText(this, R.string.msg_destruction, Toast.LENGTH_SHORT).show();
392
+
393
+
394
+
395
+ }
396
+
397
+
398
+
399
+ if (insertk.length() == 0) {
400
+
401
+
402
+
403
+ //ここにinsertkの長さを表す
404
+
405
+ Log.v("ああああああああああ","time:"+"+ insertk.length()+ ");
406
+
407
+ //updateの時は、ああああああと出るが、
408
+
409
+ //アップデートされていない
410
+
411
+ try {
412
+
413
+
414
+
415
+ ContentValues newData = new ContentValues();
416
+
417
+ newData.put(UserContract.Users.COL_DATA, data);
418
+
419
+ int updateCount = db.update(
420
+
421
+
422
+
423
+ UserContract.Users.TABLE_NAME,
424
+
425
+ newData,
426
+
427
+ Long.toString(UserContract.Users._ID) +"=" + Long.toString(idd),
428
+
429
+ null
430
+
431
+ );
432
+
433
+
434
+
435
+
436
+
437
+ ContentValues newContent = new ContentValues();
438
+
439
+ newContent.put(UserContract.Users.COL_CONTENT, content);
440
+
441
+ int updateCount1 = db.update(
442
+
443
+
444
+
445
+
446
+
447
+ UserContract.Users.TABLE_NAME,
448
+
449
+ newData,
450
+
451
+ Long.toString(UserContract.Users._ID) +"=" + Long.toString(idd),
452
+
453
+ null
454
+
455
+ );
456
+
457
+
458
+
459
+ ContentValues newTitle = new ContentValues();
460
+
461
+ newTitle.put(UserContract.Users.COL_TITLE, title);
462
+
463
+ int updateCount2 = db.update(
464
+
465
+
466
+
467
+
468
+
469
+ UserContract.Users.TABLE_NAME,
470
+
471
+ newData,
472
+
473
+ Long.toString(UserContract.Users._ID) +"=" + Long.toString(idd),
474
+
475
+ null
476
+
477
+ );
478
+
479
+
480
+
481
+ //保存に成功しました。
482
+
483
+ Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
484
+
485
+ } catch (Exception e) {
486
+
487
+ Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
488
+
489
+ }
490
+
491
+ } else {
492
+
493
+
494
+
495
+ Log.v("いいいいいいいいいい","time:"+"+ insertk.length()+ ");
496
+
497
+
498
+
499
+ //insertするといいいいと表示されるが、
500
+
501
+ //リストは、同じ物となる
502
+
503
+ //つまりセレクトがおかしいのではないか?
504
+
505
+
506
+
507
+ //これは insert
508
+
509
+ // データをtextから取得して表示するコード
510
+
511
+
512
+
513
+ try {
514
+
515
+ //この下のinsertには、updateのように、textから取得したデータをinsertする
516
+
517
+
518
+
519
+ ContentValues newUser = new ContentValues();
520
+
521
+ newUser.put(UserContract.Users.COL_TITLE,title);
522
+
523
+ newUser.put(UserContract.Users.COL_CONTENT,content);
524
+
525
+ newUser.put(UserContract.Users.COL_DATA, data);
526
+
527
+ long newId = db.insert(UserContract.Users.TABLE_NAME,
528
+
529
+ null,
530
+
531
+ newUser
532
+
533
+ );
534
+
535
+ //close db
536
+
537
+
538
+
539
+ Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
540
+
541
+ } catch (Exception e) {
542
+
543
+ Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
544
+
545
+ }
546
+
547
+
548
+
549
+ }
550
+
551
+
552
+
553
+
554
+
555
+ db.close();
556
+
557
+ }
558
+
559
+ return super.onOptionsItemSelected(item);
560
+
561
+
126
562
 
127
563
  }
128
564
 
129
-
130
-
131
-
132
-
133
- @Override
134
-
135
- protected void onResume() {
136
-
137
- super.onResume();
138
-
139
-
140
-
141
- //open helper
142
-
143
- MemoDBHelper memoDBHelper=new MemoDBHelper(this);
144
-
145
- SQLiteDatabase db=memoDBHelper.getWritableDatabase();
146
-
147
-
148
-
149
-
150
-
151
-
152
-
153
- // ListView 用アダプタのデータをクリア
154
-
155
- mList.clear();
156
-
157
-
158
-
159
- Integer id=null;
160
-
161
- String title = null;
162
-
163
- String content = null;
164
-
165
- String data=null;
166
-
167
-
168
-
169
- Cursor c;
170
-
171
- c=db.query(
172
-
173
- UserContract.Users.TABLE_NAME,
174
-
175
- null,//fields
176
-
177
- null,//where
178
-
179
- null,//where arg ここでは、多分何もせずに、全件取得して、リストに入れる
180
-
181
- null,//groupBy
182
-
183
- null,//having
184
-
185
- null,//order by
186
-
187
- null
188
-
189
- );
190
-
191
-
192
-
193
- Log.v("DB_TEST","Count:"+c.getCount());
194
-
195
-
196
-
197
- Map<String, String> map = new HashMap<String, String>();
198
-
199
- while(c.moveToNext()){
200
-
201
- //ファイルからの取得は、moveToNextでいいけどデータベースは、それでいいの?
202
-
203
- id=c.getInt(c.getColumnIndex(UserContract.Users._ID));
204
-
205
- title=c.getString(c.getColumnIndex(UserContract.Users.COL_TITLE));
206
-
207
- content=c.getString(c.getColumnIndex(UserContract.Users.COL_CONTENT));
208
-
209
- data=c.getString(c.getColumnIndex(UserContract.Users.COL_DATA));
210
-
211
- Log.v("DB_TEST"," id: "+id+ "title: "+title+ "content: "+content+" data: "+data);
212
-
213
-
214
-
215
-
216
-
217
- map.put("title", title);
218
-
219
- map.put("content", content);
220
-
221
- map.put("data",data);
222
-
223
- mList.add(map);
224
-
225
-
226
-
227
-
228
-
229
- }
565
+ }
230
-
231
- c.close();
232
-
233
- db.close();
234
-
235
-
236
-
237
-
238
-
239
- // ListView のデータ変更を表示に反映
240
-
241
- mAdapter.notifyDataSetChanged();
242
-
243
- }
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
-
252
566
 
253
567
  ```
254
-
255
- //todoリストの中身を記入するEditActivityの保存ボタンを押す時に
256
-
257
- //intentにinsertだった時は、insertに文字を代入し、
258
-
259
- //updateの時は、intentに""(から文字)を代入しており、
260
-
261
- //それを、if文で、判断し、insertするかupdateするかを判定しているコードです。
262
-
263
- //updateのコードに問題はありますでしょうか?
264
-
265
- ```java
266
-
267
- ///////////この下に保存ボタンを押した時のinsertかupdateを判断して、
268
-
269
- データベースとやりとりするコードを記入しました。
270
-
271
- @Override
272
-
273
- public boolean onOptionsItemSelected(MenuItem item) {
274
-
275
-
276
-
277
- MemoDBHelper memoDBHelper = new MemoDBHelper(this);
278
-
279
- SQLiteDatabase db = memoDBHelper.getWritableDatabase();
280
-
281
-
282
-
283
- Cursor c = null;
284
-
285
- String title = null;
286
-
287
- String content = null;
288
-
289
- String data = null;
290
-
291
- EditText eTxtTitle = null;
292
-
293
- EditText eTxtContent = null;
294
-
295
- EditText eTxtData = null;
296
-
297
-
298
-
299
- //ここのidにcancelとupdateを入れる
300
-
301
- switch (item.getItemId()) {
302
-
303
- case R.id.action_can:
304
-
305
- //キャンセルが押された場合
306
-
307
- mNotSave = true;
308
-
309
- this.finish();
310
-
311
- break;
312
-
313
-
314
-
315
- case R.id.action_upd:
316
-
317
- eTxtTitle = (EditText) findViewById(R.id.eTxtTitle);
318
-
319
- eTxtContent = (EditText) findViewById(R.id.eTxtContent);
320
-
321
- eTxtData = (EditText) findViewById(R.id.eTxtData);
322
-
323
- title = eTxtTitle.getText().toString();
324
-
325
- content = eTxtContent.getText().toString();
326
-
327
- data = eTxtData.getText().toString();
328
-
329
- Intent intent = getIntent();
330
-
331
- //あえてinsertkに変更
332
-
333
- String insertk = intent.getStringExtra("INSERT");
334
-
335
-
336
-
337
- /////////////////////この上のコードを追加しました。
338
-
339
- if (insertk.length() == 0) {
340
-
341
-
342
-
343
- //つまりinsertじゃない つまりupdate
344
-
345
- try {
346
-
347
- //書き換えをしていく
348
-
349
- ContentValues newData = new ContentValues();
350
-
351
- newData.put(UserContract.Users.COL_DATA, data);
352
-
353
- int updateCount = db.update(
354
-
355
- UserContract.Users.TABLE_NAME,
356
-
357
- newData,
358
-
359
- UserContract.Users.COL_TITLE + "= ?",
360
-
361
- new String[]{title}
362
-
363
- );
364
-
365
-
366
-
367
-
368
-
369
- ContentValues newContent = new ContentValues();
370
-
371
- newContent.put(UserContract.Users.COL_CONTENT, content);
372
-
373
- int updateCount1 = db.update(
374
-
375
- UserContract.Users.TABLE_NAME,
376
-
377
- newContent,
378
-
379
- UserContract.Users.COL_TITLE + "= ?",
380
-
381
- new String[]{title}
382
-
383
- );
384
-
385
-
386
-
387
- ContentValues newTitle = new ContentValues();
388
-
389
- newTitle.put(UserContract.Users.COL_TITLE, title);
390
-
391
- int updateCount2 = db.update(
392
-
393
- UserContract.Users.TABLE_NAME,
394
-
395
- newTitle,
396
-
397
- UserContract.Users.COL_TITLE + "= ?",
398
-
399
- new String[]{title}
400
-
401
- );
402
-
403
-
404
-
405
- //保存に成功しました。
406
-
407
- Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
408
-
409
- } catch (Exception e) {
410
-
411
- Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
412
-
413
- }
414
-
415
- //updateCount1とか2とかは、エラーのやつでしょ?
416
-
417
- } else {
418
-
419
-
420
-
421
- //これは insert
422
-
423
- //insert をEditの中でやる
424
-
425
- // データをtextから取得して表示するコード
426
-
427
-
428
-
429
- try {
430
-
431
- //この下のinsertには、updateのように、textから取得したデータをinsertする
432
-
433
-
434
-
435
- ContentValues newUser = new ContentValues();
436
-
437
- newUser.put(UserContract.Users.COL_TITLE,title);
438
-
439
- newUser.put(UserContract.Users.COL_CONTENT,content);
440
-
441
- newUser.put(UserContract.Users.COL_DATA, data);
442
-
443
- long newId = db.insert(UserContract.Users.TABLE_NAME,
444
-
445
- null,
446
-
447
- newUser
448
-
449
- );
450
-
451
- //close db
452
-
453
- //保存に成功しました。
454
-
455
-
456
-
457
- Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
458
-
459
- } catch (Exception e) {
460
-
461
- Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
462
-
463
- }
464
-
465
-
466
-
467
- }
468
-
469
- }
470
-
471
- ```

5

コードを追加しました。

2017/04/18 05:06

投稿

edoooooo
edoooooo

スコア476

test CHANGED
File without changes
test CHANGED
@@ -326,6 +326,12 @@
326
326
 
327
327
  data = eTxtData.getText().toString();
328
328
 
329
+ Intent intent = getIntent();
330
+
331
+ //あえてinsertkに変更
332
+
333
+ String insertk = intent.getStringExtra("INSERT");
334
+
329
335
 
330
336
 
331
337
  /////////////////////この上のコードを追加しました。

4

}の追加

2017/04/17 17:54

投稿

edoooooo
edoooooo

スコア476

test CHANGED
File without changes
test CHANGED
@@ -460,4 +460,6 @@
460
460
 
461
461
  }
462
462
 
463
+ }
464
+
463
465
  ```

3

コードの追加

2017/04/17 14:18

投稿

edoooooo
edoooooo

スコア476

test CHANGED
File without changes
test CHANGED
@@ -264,6 +264,72 @@
264
264
 
265
265
  ```java
266
266
 
267
+ ///////////この下に保存ボタンを押した時のinsertかupdateを判断して、
268
+
269
+ データベースとやりとりするコードを記入しました。
270
+
271
+ @Override
272
+
273
+ public boolean onOptionsItemSelected(MenuItem item) {
274
+
275
+
276
+
277
+ MemoDBHelper memoDBHelper = new MemoDBHelper(this);
278
+
279
+ SQLiteDatabase db = memoDBHelper.getWritableDatabase();
280
+
281
+
282
+
283
+ Cursor c = null;
284
+
285
+ String title = null;
286
+
287
+ String content = null;
288
+
289
+ String data = null;
290
+
291
+ EditText eTxtTitle = null;
292
+
293
+ EditText eTxtContent = null;
294
+
295
+ EditText eTxtData = null;
296
+
297
+
298
+
299
+ //ここのidにcancelとupdateを入れる
300
+
301
+ switch (item.getItemId()) {
302
+
303
+ case R.id.action_can:
304
+
305
+ //キャンセルが押された場合
306
+
307
+ mNotSave = true;
308
+
309
+ this.finish();
310
+
311
+ break;
312
+
313
+
314
+
315
+ case R.id.action_upd:
316
+
317
+ eTxtTitle = (EditText) findViewById(R.id.eTxtTitle);
318
+
319
+ eTxtContent = (EditText) findViewById(R.id.eTxtContent);
320
+
321
+ eTxtData = (EditText) findViewById(R.id.eTxtData);
322
+
323
+ title = eTxtTitle.getText().toString();
324
+
325
+ content = eTxtContent.getText().toString();
326
+
327
+ data = eTxtData.getText().toString();
328
+
329
+
330
+
331
+ /////////////////////この上のコードを追加しました。
332
+
267
333
  if (insertk.length() == 0) {
268
334
 
269
335
 

2

コードの追加

2017/04/17 13:46

投稿

edoooooo
edoooooo

スコア476

test CHANGED
File without changes
test CHANGED
@@ -251,3 +251,147 @@
251
251
 
252
252
 
253
253
  ```
254
+
255
+ //todoリストの中身を記入するEditActivityの保存ボタンを押す時に
256
+
257
+ //intentにinsertだった時は、insertに文字を代入し、
258
+
259
+ //updateの時は、intentに""(から文字)を代入しており、
260
+
261
+ //それを、if文で、判断し、insertするかupdateするかを判定しているコードです。
262
+
263
+ //updateのコードに問題はありますでしょうか?
264
+
265
+ ```java
266
+
267
+ if (insertk.length() == 0) {
268
+
269
+
270
+
271
+ //つまりinsertじゃない つまりupdate
272
+
273
+ try {
274
+
275
+ //書き換えをしていく
276
+
277
+ ContentValues newData = new ContentValues();
278
+
279
+ newData.put(UserContract.Users.COL_DATA, data);
280
+
281
+ int updateCount = db.update(
282
+
283
+ UserContract.Users.TABLE_NAME,
284
+
285
+ newData,
286
+
287
+ UserContract.Users.COL_TITLE + "= ?",
288
+
289
+ new String[]{title}
290
+
291
+ );
292
+
293
+
294
+
295
+
296
+
297
+ ContentValues newContent = new ContentValues();
298
+
299
+ newContent.put(UserContract.Users.COL_CONTENT, content);
300
+
301
+ int updateCount1 = db.update(
302
+
303
+ UserContract.Users.TABLE_NAME,
304
+
305
+ newContent,
306
+
307
+ UserContract.Users.COL_TITLE + "= ?",
308
+
309
+ new String[]{title}
310
+
311
+ );
312
+
313
+
314
+
315
+ ContentValues newTitle = new ContentValues();
316
+
317
+ newTitle.put(UserContract.Users.COL_TITLE, title);
318
+
319
+ int updateCount2 = db.update(
320
+
321
+ UserContract.Users.TABLE_NAME,
322
+
323
+ newTitle,
324
+
325
+ UserContract.Users.COL_TITLE + "= ?",
326
+
327
+ new String[]{title}
328
+
329
+ );
330
+
331
+
332
+
333
+ //保存に成功しました。
334
+
335
+ Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
336
+
337
+ } catch (Exception e) {
338
+
339
+ Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
340
+
341
+ }
342
+
343
+ //updateCount1とか2とかは、エラーのやつでしょ?
344
+
345
+ } else {
346
+
347
+
348
+
349
+ //これは insert
350
+
351
+ //insert をEditの中でやる
352
+
353
+ // データをtextから取得して表示するコード
354
+
355
+
356
+
357
+ try {
358
+
359
+ //この下のinsertには、updateのように、textから取得したデータをinsertする
360
+
361
+
362
+
363
+ ContentValues newUser = new ContentValues();
364
+
365
+ newUser.put(UserContract.Users.COL_TITLE,title);
366
+
367
+ newUser.put(UserContract.Users.COL_CONTENT,content);
368
+
369
+ newUser.put(UserContract.Users.COL_DATA, data);
370
+
371
+ long newId = db.insert(UserContract.Users.TABLE_NAME,
372
+
373
+ null,
374
+
375
+ newUser
376
+
377
+ );
378
+
379
+ //close db
380
+
381
+ //保存に成功しました。
382
+
383
+
384
+
385
+ Toast.makeText(this, R.string.msg_upd, Toast.LENGTH_SHORT).show();
386
+
387
+ } catch (Exception e) {
388
+
389
+ Toast.makeText(this, "強制returnしました。", Toast.LENGTH_LONG).show();
390
+
391
+ }
392
+
393
+
394
+
395
+ }
396
+
397
+ ```

1

コードの変更

2017/04/17 12:48

投稿

edoooooo
edoooooo

スコア476

test CHANGED
File without changes
test CHANGED
@@ -248,162 +248,6 @@
248
248
 
249
249
 
250
250
 
251
- // メニュー作成処理
252
-
253
- @Override
254
-
255
- public boolean onCreateOptionsMenu(Menu menu) {
256
-
257
- getMenuInflater().inflate(R.menu.main, menu);
258
-
259
- return true;
260
-
261
- }
262
-
263
-
264
-
265
-
266
-
267
- // メニュー選択処理
268
-
269
- @Override
270
-
271
- public boolean onOptionsItemSelected(MenuItem item) {
272
-
273
-
274
-
275
- MemoDBHelper memoDBHelper = new MemoDBHelper(this);
276
-
277
- SQLiteDatabase db = memoDBHelper.getWritableDatabase();
278
-
279
-
280
-
281
- switch (item.getItemId()) {
282
-
283
-
284
-
285
- //ここに追加のinsertのコードをそのまま入れちゃう
286
-
287
- case R.id.action_add:
288
-
289
- // [追加] 選択時の処理
290
-
291
-
292
-
293
- //insertは、true2セット(addだから)
294
-
295
- Intent intent = new Intent(MainActivity.this, EditActivity.class);
296
-
297
- intent.putExtra("INSERT","insertです。");
298
-
299
-
300
-
301
- startActivity(intent);
302
-
303
-
304
-
305
- break;
306
-
307
- default:
308
-
309
- break;
310
-
311
-
312
-
313
-
314
-
315
- }
316
-
317
- return super.onOptionsItemSelected(item);
318
-
319
- }
320
-
321
- // コンテキストメニュー作成処理
322
-
323
- @Override
324
-
325
- public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo info) {
326
-
327
- super.onCreateContextMenu(menu, view, info);
328
-
329
- getMenuInflater().inflate(R.menu.main_context, menu);
330
-
331
- }
332
-
333
-
334
-
335
-
336
-
337
-
338
-
339
- // コンテキストメニュー選択処理(削除)
340
-
341
- @Override
342
-
343
- public boolean onContextItemSelected(MenuItem item) {
344
-
345
-
346
-
347
- //open helper
348
-
349
- //open db memoDBHelperに変更
350
-
351
- MemoDBHelper memoDBHelper=new MemoDBHelper(this);
352
-
353
- SQLiteDatabase db=memoDBHelper.getWritableDatabase();
354
-
355
-
356
-
357
-
358
-
359
- AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)item.getMenuInfo();
360
-
361
- switch(item.getItemId()) {
362
-
363
- case R.id.context_del:
364
-
365
- int deleteCount = db.delete(
366
-
367
- UserContract.Users.TABLE_NAME,
368
-
369
- UserContract.Users._ID + " = ?",
370
-
371
- //これは、当時のタイトルを取得して、それをデータベースから消すようにする
372
-
373
- new String[] {"どうやって取得する?" }
374
-
375
- );
376
-
377
- //このうえ
378
-
379
-
380
-
381
- Toast.makeText(this, R.string.msg_del, Toast.LENGTH_SHORT).show();
382
-
383
- // リストから削除
384
-
385
- mList.remove(info.position);
386
-
387
- // ListView のデータ変更を表示に反映
388
-
389
- mAdapter.notifyDataSetChanged();
390
-
391
- break;
392
-
393
- default:
394
-
395
- break;
396
-
397
- }
398
-
399
-
400
-
401
- return false;
402
-
403
- }
404
-
405
- }
406
-
407
251
 
408
252
 
409
253
  ```