質問編集履歴
5
ソースコードにコメントの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,20 +9,21 @@
|
|
9
9
|
android studioで
|
10
10
|
|
11
11
|
1.CSVファイルを読み込んでおく
|
12
|
+
2.画面右上で条件を選択
|
12
|
-
|
13
|
+
3.ExitTextで文字を入力して検索ボタンをクリック
|
13
|
-
|
14
|
+
4.入力された文字がCSVファイルの中にあれば、「その文字」&「同じ行の違う列の対応する情報」をTextViewで出力
|
14
15
|
|
15
16
|
上のような機能を実装したいです。
|
16
17
|
|
17
|
-
|
18
|
+
3までは一応実装済みです。
|
18
19
|
|
19
20
|
写真はとりあえず、中身をすべて表示しているだけです。
|
20
|
-

|
21
|
+

|
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.
|
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
コード、画像、内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -17,10 +17,10 @@
|
|
17
17
|
2までは一応実装済みです。
|
18
18
|
|
19
19
|
写真はとりあえず、中身をすべて表示しているだけです。
|
20
|
-
](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
|
-
//
|
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
|
-
//
|
196
|
+
if(item == spinnerItems[1]){//スピナーで選択した条件が「気温」だったら
|
164
|
-
|
197
|
+
textView.setText(text+"の"+spinnerItems[1]+"は○○です");
|
165
|
-
|
198
|
+
}else if(item == spinnerItems[2]){//条件が「電車の本数」だったら
|
199
|
+
textView.setText(text+"の"+spinnerItems[2]+"は○○です");
|
166
|
-
|
200
|
+
}
|
167
201
|
}
|
168
|
-
|
169
202
|
}
|
170
|
-
|
171
203
|
}
|
172
|
-
|
173
|
-
|
174
204
|
}
|
175
205
|
```
|
176
206
|
|
177
|
-
現在のところ、edittextから受け取った文字をmatchメソッドにわたして、matchメソッドの中で、CSVファイルの時刻情報だけをfor文で回したときに、入力情報と一致すれば画面
|
207
|
+
現在のところ、edittextから受け取った文字をmatchメソッドにわたして、matchメソッドの中で、CSVファイルの時刻情報だけをfor文で回したときに、入力情報と一致すれば画面に、気温or電車の本数の情報をとりあえず表示させたいのですが、アルゴリズムがおかしいせいか「1時」と入力しても画面上に何も表示されません。。。
|
178
208
|
|
179
209
|
|
180
210
|
間違っている箇所がありましたら教えていただけませんでしょうか?
|
3
コードの追記、内容の一部変更
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
|
-
|
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
|
-
|
83
|
+
arrayAdapter =
|
75
84
|
new ArrayAdapter(
|
76
85
|
this, R.layout.list_item_layout , timeList);
|
86
|
+
//気温の情報
|
77
|
-
|
87
|
+
arrayAdapter2 =
|
78
88
|
new ArrayAdapter(
|
79
89
|
this, R.layout.list_item_layout , tempList);
|
90
|
+
//電車の本数
|
80
|
-
|
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
|
-
|
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
|
-
|
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
内容の部分修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -14,6 +14,8 @@
|
|
14
14
|
|
15
15
|
上のような機能を実装したいです。
|
16
16
|
|
17
|
+
2までは一応実装済みです。
|
18
|
+
|
17
19
|
写真はとりあえず、中身をすべて表示しているだけです。
|
18
20
|

|
19
21
|
|
1
ソースコード、内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,22 +1,147 @@
|
|
1
|
+
PCスペック
|
1
2
|
Windows7 64bit
|
3
|
+
メモリ 8GB
|
2
|
-
|
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
|
-
|
18
|
+

|
15
|
-
|2時|16度|8本|
|
16
|
-
|3時|21度|9本|
|
17
|
-
|4時|18度|10本|
|
18
19
|
|
19
|
-
|
20
|
+
具体的には、
|
20
|
-
気温を選択しているときに、「1時」と入力すると、「
|
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
|
-
|
139
|
+
1.このtext変数をどうやって、時間(1時とか2時とか)と一つ一つ照らし合わせるか。
|
140
|
+
2.「1時」からどうやって気温の「21度」を引っ張ってくるか。
|
141
|
+
|
142
|
+
この2つです。
|
143
|
+
|
144
|
+
1.に関しては、for文で配列?のarrayAdapterの「時間」を入力された文字(時間)が一致するまで、回し続ける。
|
145
|
+
2.に関しては具体的な解決法が思いつかないです・・・
|
146
|
+
|
147
|
+
なにか解決法はありますでしょうか??
|