質問編集履歴
3
枠の中に移動しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,60 +2,17 @@
|
|
2
2
|
教えてもらえたら幸いです。
|
3
3
|
以下エラーメッセージ
|
4
4
|
'com.test.asyncsample.MainActivity.WeatherInfoBackgroundReceiver' の 'WeatherInfoBackgroundReceiver(android.os.Handler, java.lang.String)' は '()' に適用できません
|
5
|
-
以下ソースコード
|
6
|
-
|
5
|
+
エラー部分は上から四行目です
|
7
|
-
|
8
|
-
コード
|
9
|
-
``
|
10
|
-
public class MainActivity extends AppCompatActivity {
|
11
|
-
//ログに記載するタグ用の文字列
|
12
|
-
private static final String DEBUG_TAG = "AsyncSample";
|
13
|
-
//お天気情報のURL
|
14
|
-
private static final String WEATHERINFO_URL = "http://api.openweathermap.org/date/2.5/weather?lang=ja";
|
15
|
-
//お天気apiにアクセスするためのapiキー
|
16
|
-
private static final String APP_ID = "・・・";
|
17
|
-
//リストビューに表示させるリストデータ
|
18
|
-
private List<Map<String,String>> _list;
|
19
|
-
|
20
|
-
@Override
|
21
|
-
protected void onCreate(Bundle savedInstanceState) {
|
22
|
-
super.onCreate(savedInstanceState);
|
23
|
-
setContentView(R.layout.activity_main);
|
24
|
-
_list = createList();
|
25
|
-
|
26
|
-
ListView lvCityList = findViewById(R.id.lvCityList);
|
27
|
-
String[] from = {"name"};
|
28
|
-
int[] to = {android.R.id.text1} ;
|
29
|
-
SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(), _list,android.R.layout.simple_list_item_1,from,to);
|
30
|
-
lvCityList.setAdapter(adapter);
|
31
|
-
lvCityList.setOnItemClickListener(new ListItemClickListener());
|
32
|
-
}
|
33
|
-
//リストビューに表示させる天気ポイントリストデータを生成するメソッド
|
34
|
-
private List<Map<String,String>>createList(){
|
35
|
-
List<Map<String,String>>list = new ArrayList<>();
|
36
|
-
|
37
|
-
Map<String,String>map = new HashMap<>();
|
38
|
-
map.put("name","大阪");
|
39
|
-
map.put("q","osaka");
|
40
|
-
list.add(map);
|
41
|
-
map = new HashMap<>();
|
42
|
-
map.put("name","神戸");
|
43
|
-
map.put("q","kobe");
|
44
|
-
list.add(map);
|
45
|
-
|
46
|
-
|
6
|
+
```ここに言語を入力
|
47
|
-
|
48
|
-
}
|
49
|
-
//お天気情報の取得処理を行うメソッド
|
50
|
-
@UiThread
|
51
|
-
|
7
|
+
private void receiveWeatherInfo(final String urlFull){
|
52
8
|
Looper mainLooper = Looper.getMainLooper();
|
53
9
|
Handler handler = HandlerCompat.createAsync(mainLooper);
|
54
10
|
WeatherInfoBackgroundReceiver backgroundReceiver = new WeatherInfoBackgroundReceiver();
|
55
11
|
ExecutorService executorService = Executors.newSingleThreadExecutor();
|
56
12
|
executorService.submit(backgroundReceiver);
|
57
13
|
|
14
|
+
}
|
58
|
-
|
15
|
+
private class WeatherInfoBackgroundReceiver implements Runnable{
|
59
16
|
//ハンドラオブジェクト
|
60
17
|
private final Handler _handler;
|
61
18
|
//お天気情報を取得するURL
|
@@ -76,6 +33,21 @@
|
|
76
33
|
//天気情報サービスから取得したjson文字列。天気情報が格納されたいる
|
77
34
|
String result = "";
|
78
35
|
try {
|
79
|
-
//URLオブジェクトを生成
|
36
|
+
//URLオブジェクトを生成
|
80
|
-
|
37
|
+
URL url = new URL(_urlFull);
|
38
|
+
//URLオブジェクトからhttpURLConnectionオブジェクトを取得
|
39
|
+
con = (HttpURLConnection) url.openConnection();
|
40
|
+
//接続に使ってもいい時間を設定
|
41
|
+
con.setConnectTimeout(1000);
|
42
|
+
//データ取得に使っても良い時間
|
43
|
+
con.setReadTimeout(1000);
|
44
|
+
//http接続メソッドをgetに設定
|
45
|
+
con.setRequestMethod("GET");
|
46
|
+
//接続
|
47
|
+
con.connect();
|
48
|
+
//httpURLConnectionオブジェクトからレスポンスデータを取得
|
49
|
+
is = con.getInputStream();
|
50
|
+
//レスポンスうデータであるinputstreamオブジェクトを文字列に変換
|
51
|
+
result = is2String(is);
|
52
|
+
}
|
81
53
|
```
|
2
枠の中に移動しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -5,7 +5,9 @@
|
|
5
5
|
以下ソースコード
|
6
6
|
エラー部分は下から三行目です
|
7
7
|
|
8
|
+
コード
|
9
|
+
``
|
8
|
-
|
10
|
+
public class MainActivity extends AppCompatActivity {
|
9
11
|
//ログに記載するタグ用の文字列
|
10
12
|
private static final String DEBUG_TAG = "AsyncSample";
|
11
13
|
//お天気情報のURL
|
@@ -74,4 +76,6 @@
|
|
74
76
|
//天気情報サービスから取得したjson文字列。天気情報が格納されたいる
|
75
77
|
String result = "";
|
76
78
|
try {
|
77
|
-
//URLオブジェクトを生成
|
79
|
+
//URLオブジェクトを生成`
|
80
|
+
|
81
|
+
```
|
1
WeatherInfoBackgroundReceiverCLASSを追記しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -51,4 +51,27 @@
|
|
51
51
|
Handler handler = HandlerCompat.createAsync(mainLooper);
|
52
52
|
WeatherInfoBackgroundReceiver backgroundReceiver = new WeatherInfoBackgroundReceiver();
|
53
53
|
ExecutorService executorService = Executors.newSingleThreadExecutor();
|
54
|
-
executorService.submit(backgroundReceiver);
|
54
|
+
executorService.submit(backgroundReceiver);
|
55
|
+
|
56
|
+
private class WeatherInfoBackgroundReceiver implements Runnable{
|
57
|
+
//ハンドラオブジェクト
|
58
|
+
private final Handler _handler;
|
59
|
+
//お天気情報を取得するURL
|
60
|
+
private final String _urlFull;
|
61
|
+
|
62
|
+
//コンストラクタ
|
63
|
+
public WeatherInfoBackgroundReceiver(Handler handler , String urlFull){
|
64
|
+
_handler = handler;
|
65
|
+
_urlFull = urlFull;
|
66
|
+
}
|
67
|
+
@WorkerThread
|
68
|
+
@Override
|
69
|
+
public void run(){
|
70
|
+
//http接続を行うhttpURLConnectionオブジェクトを宣言。finalyで開放するためにtry外で宣言
|
71
|
+
HttpURLConnection con = null;
|
72
|
+
//http接続のレスポンスデータとして取得するinputStreamオブジェクトを宣言。同じくtry外で宣言
|
73
|
+
InputStream is = null;
|
74
|
+
//天気情報サービスから取得したjson文字列。天気情報が格納されたいる
|
75
|
+
String result = "";
|
76
|
+
try {
|
77
|
+
//URLオブジェクトを生成
|