SQLiteDatabaseのデータベース操作の中で、Cursor.getString(0)を同じループ内で2回呼び出したら、IndexOutOfBoundsExceptionが出てきてしまいました。
呼出を1回にしたところ、エラーが出なかったので、原因は複数回呼び出したことだと思うのですが、getStringやgetIntなどは、一つのpositionにつき1回しか呼び出せないのでしょうか。
一通り検索してみたのですが、そのようなことは書いていなかったので、質問する次第です。
java
1final Cursor c_am = db.query("default_tb", new String[]{"task_col", "checked_col"}, 2 "date_col =? AND time_col =?", new String[] {today_str, "AM"}, 3 null, null, null); 4 boolean bool = c_am.moveToFirst(); 5 while(bool){ 6 //CheckBoxの設定 7 final CheckBox cb = new CheckBox(MainActivity.this); 8 cb.setText(c_am.getString(0)); 9 //CheckBoxにリスナーをつける 10 cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 11 @Override 12 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 13 //DBのアップデート処理 14 ContentValues val = new ContentValues(); 15 val.put("checked_col", 1); 16 db.update("default_tb", val, "task_col =?", new String[]{c_am.getString(0)}); 17 } 18 }); 19 //checkedが1(=TRUE)なら、checkedにする 20 if(c_am.getInt(1) == 1){ 21 cb.setChecked(true); 22 } 23 24 //全体のlayoutに追加 25 amLayout.addView(setRow(cb)); 26 bool = c_am.moveToNext(); 27 } 28 c_am.close();
コードを質問に追記してください。
回答2件
あなたの回答
tips
プレビュー