teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

内容の修正

2020/11/08 04:39

投稿

karin10
karin10

スコア34

title CHANGED
@@ -1,1 +1,1 @@
1
- AutoCompleteTextViewにSQLiteの登録情報の反映
1
+ AutoCompleteTextViewで選択した行データではなく最後に登録したデータが表示される
body CHANGED
@@ -1,5 +1,8 @@
1
- AutoCompleteTextViewにSQLiteの登録情報の反映をさせるときに登録情報の各列の情報を変数に置き換えながら実行させたいと考えいますが
1
+ SQLiteの登録情報の反映をさせたAutoCompleteTextViewでデータ1(0)の情報を選択して、ボタンを押下すると
2
+ textViewに列2、列3、、、と反映されて表示させたいです
2
- 各列の情報を変数置き換えというコドを加えるとエラー起きてしまいます。
3
+ しかし、ボタン押下後表示され他の行のデータのものになってしまいます。
4
+ 選択した行のデータを反映させる方法についてご教授お願い致します。
5
+
3
6
  ```errormsg
4
7
  android.database.CursorIndexOutOfBoundsException: Index 11 requested, with a size of 11
5
8
  ```
@@ -7,11 +10,13 @@
7
10
  ```pagefragment1
8
11
  public class PageFragment1 extends Fragment {
9
12
 
13
+ private String foodName = "";
14
+ private int id = 0;
10
- private double foodgram = 0.0d;
15
+ private double foodgram = 0.0d;
11
16
  private double calorie = 0.0d;
12
17
  private double protain = 0.0d;
13
-   private double fat = 0.0d;
14
18
  private double carbon = 0.0d;
19
+ private double fat = 0.0d;
15
20
 
16
21
  @Override
17
22
  public void onViewCreated(View view, Bundle savedInstanceState) {
@@ -27,18 +32,20 @@
27
32
  cr.moveToFirst();
28
33
  mydata = new String[cr.getCount()];
29
34
  int i = 0;
35
+ while (cr.moveToNext()) {
36
+
30
- do {
37
+ id = cr.getInt(0);
31
38
  mydata[i] = cr.getString(1);
32
39
  i ++;
33
- }while (cr.moveToNext()); {
34
- int id = cr.getInt(0); //この行に対してerrormsg
35
- String foodName = cr.getString(1);
40
+ foodName = cr.getString(1);
36
41
  foodgram = cr.getDouble(2);
37
42
  calorie = cr.getDouble(3);
38
43
  protain = cr.getDouble(4);
39
44
  carbon = cr.getDouble(5);
40
- fat = cr.getDouble(6);
45
+ fat = cr.getDouble(6);
46
+
41
47
  }
48
+
42
49
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.requireActivity(),
43
50
  android.R.layout.simple_dropdown_item_1line, mydata);
44
51
  foodlist1.setAdapter(adapter);
@@ -47,6 +54,32 @@
47
54
  foodlist4.setAdapter(adapter);
48
55
 
49
56
  }
57
+
58
+ @Override
59
+ public void onResume() {
60
+ super.onResume();
61
+
62
+ mydb = new MySQLiteOpenHelper(requireActivity());
63
+ db = mydb.getReadableDatabase();
64
+ final String [] mydata;
65
+ ArrayList<String> array = new ArrayList<>();
66
+ String sql = "SELECT * FROM Products";
67
+ Cursor cr = db.rawQuery(sql, null);
68
+ cr.moveToFirst();
69
+ mydata = new String[cr.getCount()];
70
+ int i = 0;
71
+ do {
72
+ mydata[i] = cr.getString(1);
73
+ i ++;
74
+ }while (cr.moveToNext());
75
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.requireActivity(),
76
+ android.R.layout.simple_dropdown_item_1line, mydata);
77
+ foodlist1.setAdapter(adapter);
78
+ foodlist2.setAdapter(adapter);
79
+ foodlist3.setAdapter(adapter);
80
+ foodlist4.setAdapter(adapter);
81
+ }
82
+
50
83
  }
51
84
  ```
52
85
  while文の中のcr.get()文を全て削除すると新規データも反映されるのですが、

2

内容の修正

2020/11/08 04:39

投稿

karin10
karin10

スコア34

title CHANGED
File without changes
body CHANGED
@@ -45,6 +45,9 @@
45
45
  foodlist2.setAdapter(adapter);
46
46
  foodlist3.setAdapter(adapter);
47
47
  foodlist4.setAdapter(adapter);
48
+
49
+ }
50
+ }
48
51
  ```
49
52
  while文の中のcr.get()文を全て削除すると新規データも反映されるのですが、
50
53
  選択した行のデータの各列の情報をtextViewに反映させたいのでcr.get()文を書いています。

1

内容の修正

2020/11/07 02:32

投稿

karin10
karin10

スコア34

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,19 @@
5
5
  ```
6
6
 
7
7
  ```pagefragment1
8
+ public class PageFragment1 extends Fragment {
9
+
10
+ private double foodgram = 0.0d;
11
+ private double calorie = 0.0d;
12
+ private double protain = 0.0d;
13
+   private double fat = 0.0d;
14
+ private double carbon = 0.0d;
15
+
16
+ @Override
17
+ public void onViewCreated(View view, Bundle savedInstanceState) {
18
+ super.onViewCreated(view, savedInstanceState);
19
+
8
- //データベースの取り込み
20
+ //データベースの取り込み
9
21
  mydb = new MySQLiteOpenHelper(requireActivity());
10
22
  db = mydb.getReadableDatabase();
11
23
  final String [] mydata;
@@ -24,8 +36,8 @@
24
36
  foodgram = cr.getDouble(2);
25
37
  calorie = cr.getDouble(3);
26
38
  protain = cr.getDouble(4);
27
- double carbon = cr.getDouble(5);
39
+ carbon = cr.getDouble(5);
28
- double fat = cr.getDouble(6);
40
+ fat = cr.getDouble(6);
29
41
  }
30
42
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.requireActivity(),
31
43
  android.R.layout.simple_dropdown_item_1line, mydata);