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

質問編集履歴

5

ソースコードにコメントの追加

2019/05/23 01:46

投稿

sekaikan_ozaki
sekaikan_ozaki

スコア65

title CHANGED
File without changes
body CHANGED
@@ -9,20 +9,21 @@
9
9
  android studioで
10
10
 
11
11
  1.CSVファイルを読み込んでおく
12
+ 2.画面右上で条件を選択
12
- 2.ExitTextで文字を入力してbuttonをクリック
13
+ 3.ExitTextで文字を入力して検索ボタンをクリック
13
- 3.入力された文字がCSVファイルの中にあれば、「その文字」&「同じ行の違う列の対応する情報」をTextViewで出力
14
+ 4.入力された文字がCSVファイルの中にあれば、「その文字」&「同じ行の違う列の対応する情報」をTextViewで出力
14
15
 
15
16
  上のような機能を実装したいです。
16
17
 
17
- 2までは一応実装済みです。
18
+ 3までは一応実装済みです。
18
19
 
19
20
  写真はとりあえず、中身をすべて表示しているだけです。
20
- ![![イメージ説明](e88aa096405163146d21776cbeb5726a.png)](678e3e42fc260f0b1bfd82ec18e884be.png)
21
+ ![![イメージ説明](e88aa096405163146d21776cbeb5726a.png)
21
22
 
22
23
  具体的には、
23
24
  ほしい情報として画面右上の選択で「気温」を選択しているときに、「1時」と入力すると、「1時」&「21度」がTextViewで出力されるみたいな感じです。
24
25
 
25
- 現時点でのソースコードはんな感じです。
26
+ 現時点でのソースコードはんな感じです。
26
27
 
27
28
  ```java
28
29
  package com.example.csvread3;
@@ -50,22 +51,24 @@
50
51
 
51
52
  public class MainActivity extends AppCompatActivity {
52
53
 
54
+ //リストの宣言
53
55
  private ArrayList<String> timeList;
54
56
  private ArrayList<String> tempList;
55
57
  private ArrayList<String> amountList;
56
58
 
59
+ //アダプターの宣言
57
60
  private ArrayAdapter arrayAdapter;
58
61
  private ArrayAdapter arrayAdapter2;
59
62
  private ArrayAdapter arrayAdapter3;
60
63
 
61
- private TextView textView;
64
+ private TextView textView;//適合した際に文章を表示
62
- private EditText editText;
65
+ private EditText editText;//時刻を入力
63
- String text;
66
+ String text;//入力内容
64
- String item;
67
+ String item;//気温or電車の本数
65
68
 
66
69
 
67
- private String spinnerItems[] = {"選択", "気温", "電車"};
70
+ private String spinnerItems[] = {"選択", "気温", "電車"};//スピナー
68
- private TextView SpinnertextView;
71
+ //private TextView SpinnertextView;//現在のスピナーで選んでるやつの表示用
69
72
 
70
73
  @Override
71
74
  protected void onCreate(Bundle savedInstanceState) {
@@ -80,7 +83,7 @@
80
83
  //CSVを読み込んでおく
81
84
  readCSV();
82
85
 
83
- //アプリに表示するためのインスタンスを作成
86
+ //アプリにCSVの中身を表示するためのインスタンスを作成
84
87
  ListView listView = (ListView) findViewById(R.id.list_view1);
85
88
  ListView listView2 = (ListView) findViewById(R.id.list_view2);
86
89
  ListView listView3 = (ListView) findViewById(R.id.list_view3);
@@ -111,7 +114,7 @@
111
114
  Button button = findViewById(R.id.button);
112
115
 
113
116
  //検索条件(気温or電車の本数)を選択
114
- SpinnertextView = findViewById(R.id.sp_text_view);
117
+ //SpinnertextView = findViewById(R.id.spinner_text_view);
115
118
  Spinner spinner = findViewById(R.id.spinner);
116
119
 
117
120
  // ArrayAdapter
@@ -133,7 +136,7 @@
133
136
  View view, int position, long id) {
134
137
  Spinner spinner = (Spinner)parent;
135
138
  item = (String)spinner.getSelectedItem();
136
- SpinnertextView.setText(item);
139
+ //SpinnertextView.setText(item);
137
140
 
138
141
 
139
142
  }

4

コード、画像、内容の修正

2019/05/23 01:46

投稿

sekaikan_ozaki
sekaikan_ozaki

スコア65

title CHANGED
File without changes
body CHANGED
@@ -17,10 +17,10 @@
17
17
  2までは一応実装済みです。
18
18
 
19
19
  写真はとりあえず、中身をすべて表示しているだけです。
20
- ![イメージ説明](83d00e56dec1f09804c065feaf12d100.png)
20
+ ![![イメージ説明](e88aa096405163146d21776cbeb5726a.png)](678e3e42fc260f0b1bfd82ec18e884be.png)
21
21
 
22
22
  具体的には、
23
- ほしい情報として「気温」を選択しているときに、「1時」と入力すると、「1時」&「21度」がTextViewで出力されるみたいな感じです。
23
+ ほしい情報として画面右上の選択で「気温」を選択しているときに、「1時」と入力すると、「1時」&「21度」がTextViewで出力されるみたいな感じです。
24
24
 
25
25
  現時点でのソースコードはかんな感じです。
26
26
 
@@ -30,10 +30,12 @@
30
30
  import android.support.v7.app.AppCompatActivity;
31
31
  import android.os.Bundle;
32
32
  import android.view.View;
33
+ import android.widget.AdapterView;
33
34
  import android.widget.ArrayAdapter;
34
35
  import android.widget.Button;
35
36
  import android.widget.EditText;
36
37
  import android.widget.ListView;
38
+ import android.widget.Spinner;
37
39
  import android.widget.TextView;
38
40
 
39
41
  import java.io.BufferedReader;
@@ -59,8 +61,12 @@
59
61
  private TextView textView;
60
62
  private EditText editText;
61
63
  String text;
64
+ String item;
62
65
 
63
66
 
67
+ private String spinnerItems[] = {"選択", "気温", "電車"};
68
+ private TextView SpinnertextView;
69
+
64
70
  @Override
65
71
  protected void onCreate(Bundle savedInstanceState) {
66
72
  super.onCreate(savedInstanceState);
@@ -104,23 +110,51 @@
104
110
  //ボタンの作成
105
111
  Button button = findViewById(R.id.button);
106
112
 
113
+ //検索条件(気温or電車の本数)を選択
114
+ SpinnertextView = findViewById(R.id.sp_text_view);
115
+ Spinner spinner = findViewById(R.id.spinner);
116
+
117
+ // ArrayAdapter
118
+ ArrayAdapter<String> adapter
119
+ = new ArrayAdapter<>(this,
120
+ android.R.layout.simple_spinner_item, spinnerItems);
121
+
122
+ //ユーザーが選択しようとするときにドロップダウンによりリストを表示するのに使うレイアウトを指定
123
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
124
+
125
+ // spinner に adapter をセット
126
+ spinner.setAdapter(adapter);
127
+
128
+ // リスナーを登録
129
+ spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
130
+ // アイテムが選択された時
131
+ @Override
132
+ public void onItemSelected(AdapterView<?> parent,
133
+ View view, int position, long id) {
134
+ Spinner spinner = (Spinner)parent;
135
+ item = (String)spinner.getSelectedItem();
136
+ SpinnertextView.setText(item);
137
+
138
+
139
+ }
140
+ // アイテムが選択されなかった
141
+ public void onNothingSelected(AdapterView<?> parent) {
142
+ //
143
+ }
144
+ });
145
+
146
+
107
- //ボタンが押されたら
147
+ //検索ボタンが押されたら
108
148
  button.setOnClickListener(new View.OnClickListener() {
109
149
  @Override
110
150
  public void onClick(View v) {
111
151
  // エディットテキストの文字を取得
112
152
  text = editText.getText().toString();
113
- // 取得したテキストを TextView に張り付ける
114
- //textView.setText(text);
153
+ //入力された時刻と適合する時刻を探すメソッド
154
+ match(text);
115
155
 
116
-
117
156
  }
118
157
  });
119
-
120
- //入力された時刻と適合する時刻を探すメソッド
121
- match(text);
122
-
123
-
124
158
  }
125
159
 
126
160
  /**
@@ -159,22 +193,18 @@
159
193
  for(String s : timeList){
160
194
  //入力情報と一致したら
161
195
  if(text == s){
162
-
163
- // 取得したテキストを TextView に張り付ける
196
+ if(item == spinnerItems[1]){//スピナーで選択した条件が「気温」だったら
164
- textView.setText("text");
197
+ textView.setText(text+"の"+spinnerItems[1]+"は○○です");
165
-
198
+ }else if(item == spinnerItems[2]){//条件が「電車の本数」だったら
199
+ textView.setText(text+"の"+spinnerItems[2]+"は○○です");
166
- break;
200
+ }
167
201
  }
168
-
169
202
  }
170
-
171
203
  }
172
-
173
-
174
204
  }
175
205
  ```
176
206
 
177
- 現在のところ、edittextから受け取った文字をmatchメソッドにわたして、matchメソッドの中で、CSVファイルの時刻情報だけをfor文で回したときに、入力情報と一致すれば画面一番上に、「一致成功」りあえず表示させたいのですが、アルゴリズムがおかしいせいか「1時」と入力しても画面上に何も表示されません。。。
207
+ 現在のところ、edittextから受け取った文字をmatchメソッドにわたして、matchメソッドの中で、CSVファイルの時刻情報だけをfor文で回したときに、入力情報と一致すれば画面に、気温or電車の本数の情報をとりあえず表示させたいのですが、アルゴリズムがおかしいせいか「1時」と入力しても画面上に何も表示されません。。。
178
208
 
179
209
 
180
210
  間違っている箇所がありましたら教えていただけませんでしょうか?

3

コードの追記、内容の一部変更

2019/05/23 01:18

投稿

sekaikan_ozaki
sekaikan_ozaki

スコア65

title CHANGED
File without changes
body CHANGED
@@ -41,18 +41,24 @@
41
41
  import java.io.InputStream;
42
42
  import java.io.InputStreamReader;
43
43
  import java.util.ArrayList;
44
+ import java.util.Iterator;
44
45
  import java.util.List;
45
46
  import java.util.StringTokenizer;
46
47
 
47
48
 
48
49
  public class MainActivity extends AppCompatActivity {
49
50
 
50
- private ArrayList timeList;
51
+ private ArrayList<String> timeList;
51
- private ArrayList tempList;
52
+ private ArrayList<String> tempList;
52
- private ArrayList amountList;
53
+ private ArrayList<String> amountList;
53
54
 
55
+ private ArrayAdapter arrayAdapter;
56
+ private ArrayAdapter arrayAdapter2;
57
+ private ArrayAdapter arrayAdapter3;
58
+
54
59
  private TextView textView;
55
60
  private EditText editText;
61
+ String text;
56
62
 
57
63
 
58
64
  @Override
@@ -60,46 +66,61 @@
60
66
  super.onCreate(savedInstanceState);
61
67
  setContentView(R.layout.activity_main);
62
68
 
69
+ //フレームワーク作成
70
+ timeList = new ArrayList<String>();
71
+ tempList = new ArrayList<String>();
72
+ amountList = new ArrayList<String>();
63
73
 
64
- timeList = new ArrayList<>();
74
+ //CSVを読み込んでおく
65
- tempList = new ArrayList<>();
66
- amountList = new ArrayList<>();
67
-
68
75
  readCSV();
69
76
 
77
+ //アプリに表示するためのインスタンスを作成
70
78
  ListView listView = (ListView) findViewById(R.id.list_view1);
71
79
  ListView listView2 = (ListView) findViewById(R.id.list_view2);
72
80
  ListView listView3 = (ListView) findViewById(R.id.list_view3);
73
81
 
82
+ //時刻の情報
74
- ArrayAdapter arrayAdapter =
83
+ arrayAdapter =
75
84
  new ArrayAdapter(
76
85
  this, R.layout.list_item_layout , timeList);
86
+ //気温の情報
77
- ArrayAdapter arrayAdapter2 =
87
+ arrayAdapter2 =
78
88
  new ArrayAdapter(
79
89
  this, R.layout.list_item_layout , tempList);
90
+ //電車の本数
80
- ArrayAdapter arrayAdapter3 =
91
+ arrayAdapter3 =
81
92
  new ArrayAdapter(
82
93
  this, R.layout.list_item_layout , amountList);
83
94
 
95
+ //画面内に表示
84
96
  listView.setAdapter(arrayAdapter);
85
97
  listView2.setAdapter(arrayAdapter2);
86
98
  listView3.setAdapter(arrayAdapter3);
87
99
 
88
-
100
+ //文字を入力
89
101
  editText = findViewById(R.id.edit_text);
102
+ //入力した文字を表示する為の準備
90
103
  textView = findViewById(R.id.text_view);
104
+ //ボタンの作成
91
105
  Button button = findViewById(R.id.button);
92
106
 
93
-
107
+ //ボタンが押されたら
94
108
  button.setOnClickListener(new View.OnClickListener() {
95
109
  @Override
96
110
  public void onClick(View v) {
97
- // エディットテキストのテキストを取得
111
+ // エディットテキストの文字を取得
98
- String text = editText.getText().toString();
112
+ text = editText.getText().toString();
99
113
  // 取得したテキストを TextView に張り付ける
100
- textView.setText(text);
114
+ //textView.setText(text);
115
+
116
+
101
117
  }
102
118
  });
119
+
120
+ //入力された時刻と適合する時刻を探すメソッド
121
+ match(text);
122
+
123
+
103
124
  }
104
125
 
105
126
  /**
@@ -131,19 +152,29 @@
131
152
  e.printStackTrace();
132
153
  }
133
154
  }
155
+
156
+ //入力された文字(時刻)と適合する時刻を探すメソッド
157
+ public void match(String text){
158
+ //時刻の情報を1番目から最後まで回す
159
+ for(String s : timeList){
160
+ //入力情報と一致したら
161
+ if(text == s){
162
+
163
+ // 取得したテキストを TextView に張り付ける
164
+ textView.setText("text");
165
+
166
+ break;
167
+ }
168
+
169
+ }
170
+
171
+ }
172
+
173
+
134
174
  }
135
175
  ```
136
176
 
137
- この続きとして、実装したいことは、
138
- // エディットテキストのテキストを取得
139
- String text = editText.getText().toString();
177
+ 現在のところ、edittextから受け取った文字をmatchメソッドにわたして、matchメソッドの中で、CSVファイルの時刻情報だけをfor文で回したときに、入力情報と一致すれば画面一番上に、「一致成功」ととりあえず表示させたいのですが、アルゴリズムがおかしいせいか「1時」と入力しても画面上に何も表示されません。。。
140
178
 
141
- 1.このtext変数をどうやって、時間(1時とか2時とか)と一つ一つ照らし合わせるか。
142
- 2.「1時」からどうやって気温の「21度」を引っ張ってくるか。
143
179
 
144
- この2つです。
145
-
146
- 1.に関しては、for文で配列?のarrayAdapterの「時間」を入力された文字(時間)が一致するまで、回し続ける。
147
- 2.に関しては具体的な解決法が思いつかないです・・・
148
-
149
- なにか解決法はありまでしょうか?
180
+ 間違っている箇所がありましたら教えていただけませんでしょうか?

2

内容の部分修正

2019/05/22 07:50

投稿

sekaikan_ozaki
sekaikan_ozaki

スコア65

title CHANGED
File without changes
body CHANGED
@@ -14,6 +14,8 @@
14
14
 
15
15
  上のような機能を実装したいです。
16
16
 
17
+ 2までは一応実装済みです。
18
+
17
19
  写真はとりあえず、中身をすべて表示しているだけです。
18
20
  ![イメージ説明](83d00e56dec1f09804c065feaf12d100.png)
19
21
 

1

ソースコード、内容の修正

2019/05/22 05:12

投稿

sekaikan_ozaki
sekaikan_ozaki

スコア65

title CHANGED
File without changes
body CHANGED
@@ -1,22 +1,147 @@
1
+ PCスペック
1
2
  Windows7 64bit
3
+ メモリ 8GB
2
- Android studio 3.4
4
+ プロセッサ Intel Core i7-3610
3
- 実機なし、エミュレータでデモ
4
5
 
6
+ Android Studio 3.4
7
+
8
+
5
9
  android studioで
6
10
 
7
11
  1.CSVファイルを読み込んでおく
8
- 2.ExitTextで文字を入力
12
+ 2.ExitTextで文字を入力してbuttonをクリック
9
- 3.入力された文字がCSVファイルの中にあれば、同じ行の違う列の対応する情報をTextViewで出力
13
+ 3.入力された文字がCSVファイルの中にあれば、「その文字」&「同じ行の違う列の対応する情報をTextViewで出力
10
14
 
11
15
  上のような機能を実装したいです。
12
16
 
13
- |///|気温|電車数|
17
+ 写真はとりあえず、中身をすべて表示しているだけです。
14
- |1時|15度|12本|
18
+ ![イメージ説明](83d00e56dec1f09804c065feaf12d100.png)
15
- |2時|16度|8本|
16
- |3時|21度|9本|
17
- |4時|18度|10本|
18
19
 
19
- やりたいことは、
20
+ 具体的には、
20
- 気温を選択しているときに、「1時」と入力すると、「15度」がTextViewで出力されるみたいな感じです。
21
+ ほしい情報として「気温を選択しているときに、「1時」と入力すると、「1時」&「21度」がTextViewで出力されるみたいな感じです。
21
22
 
23
+ 現時点でのソースコードはかんな感じです。
24
+
25
+ ```java
26
+ package com.example.csvread3;
27
+
28
+ import android.support.v7.app.AppCompatActivity;
29
+ import android.os.Bundle;
30
+ import android.view.View;
31
+ import android.widget.ArrayAdapter;
32
+ import android.widget.Button;
33
+ import android.widget.EditText;
34
+ import android.widget.ListView;
35
+ import android.widget.TextView;
36
+
37
+ import java.io.BufferedReader;
38
+ import java.io.IOException;
39
+ import java.io.InputStream;
40
+ import java.io.InputStreamReader;
41
+ import java.util.ArrayList;
42
+ import java.util.List;
43
+ import java.util.StringTokenizer;
44
+
45
+
46
+ public class MainActivity extends AppCompatActivity {
47
+
48
+ private ArrayList timeList;
49
+ private ArrayList tempList;
50
+ private ArrayList amountList;
51
+
52
+ private TextView textView;
53
+ private EditText editText;
54
+
55
+
56
+ @Override
57
+ protected void onCreate(Bundle savedInstanceState) {
58
+ super.onCreate(savedInstanceState);
59
+ setContentView(R.layout.activity_main);
60
+
61
+
62
+ timeList = new ArrayList<>();
63
+ tempList = new ArrayList<>();
64
+ amountList = new ArrayList<>();
65
+
66
+ readCSV();
67
+
68
+ ListView listView = (ListView) findViewById(R.id.list_view1);
69
+ ListView listView2 = (ListView) findViewById(R.id.list_view2);
70
+ ListView listView3 = (ListView) findViewById(R.id.list_view3);
71
+
72
+ ArrayAdapter arrayAdapter =
73
+ new ArrayAdapter(
74
+ this, R.layout.list_item_layout , timeList);
75
+ ArrayAdapter arrayAdapter2 =
76
+ new ArrayAdapter(
77
+ this, R.layout.list_item_layout , tempList);
78
+ ArrayAdapter arrayAdapter3 =
79
+ new ArrayAdapter(
80
+ this, R.layout.list_item_layout , amountList);
81
+
82
+ listView.setAdapter(arrayAdapter);
83
+ listView2.setAdapter(arrayAdapter2);
84
+ listView3.setAdapter(arrayAdapter3);
85
+
86
+
87
+ editText = findViewById(R.id.edit_text);
88
+ textView = findViewById(R.id.text_view);
89
+ Button button = findViewById(R.id.button);
90
+
91
+
92
+ button.setOnClickListener(new View.OnClickListener() {
93
+ @Override
94
+ public void onClick(View v) {
95
+ // エディットテキストのテキストを取得
96
+ String text = editText.getText().toString();
97
+ // 取得したテキストを TextView に張り付ける
98
+ textView.setText(text);
99
+ }
100
+ });
101
+ }
102
+
103
+ /**
104
+ * CSVの読み込み
105
+ */
106
+ public void readCSV() {
107
+ try {
108
+ InputStream inputStream =
109
+ getResources().getAssets().open("data1.csv");
110
+
111
+ InputStreamReader inputStreamReader =
112
+ new InputStreamReader(inputStream);
113
+
114
+ BufferedReader bufferReader =
115
+ new BufferedReader(inputStreamReader);
116
+
117
+ String line = "";
118
+
119
+ while ((line = bufferReader.readLine()) != null) {
120
+ StringTokenizer stringTokenizer =
121
+ new StringTokenizer(line, ",");
122
+
123
+ timeList.add(stringTokenizer.nextToken());
124
+ tempList.add(stringTokenizer.nextToken());
125
+ amountList.add(stringTokenizer.nextToken());
126
+ }
127
+ bufferReader.close();
128
+ } catch (IOException e) {
129
+ e.printStackTrace();
130
+ }
131
+ }
132
+ }
133
+ ```
134
+
135
+ この続きとして、実装したいことは、
136
+ // エディットテキストのテキストを取得
137
+ String text = editText.getText().toString();
138
+
22
- そもそもCSV読み込み方すら分からないのでそこから教えていただけませんでょう
139
+ 1.こtext変数をどうやって時間(1時と2時とか)と一つ一つ照らし合わせる
140
+ 2.「1時」からどうやって気温の「21度」を引っ張ってくるか。
141
+
142
+ この2つです。
143
+
144
+ 1.に関しては、for文で配列?のarrayAdapterの「時間」を入力された文字(時間)が一致するまで、回し続ける。
145
+ 2.に関しては具体的な解決法が思いつかないです・・・
146
+
147
+ なにか解決法はありますでしょうか??