質問編集履歴

3

訂正

2022/01/28 06:27

投稿

MM_LL
MM_LL

スコア18

test CHANGED
File without changes
test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
  Buttonを押したら、番組名と開始時間、終了時間が出る番組表アプリを作りたいです。
88
88
  現在"title"と記載し、実行しましたが表示されませんでした。
89
- 数日試行錯誤しましたが、まだ分からずにいます
89
+ 数日試行錯誤しましたが、まだ分からずにいます
90
90
  ご教授いただければ幸いです。
91
91
  よろしくお願いします。
92
92
 

2

訂正

2022/01/28 06:18

投稿

MM_LL
MM_LL

スコア18

test CHANGED
File without changes
test CHANGED
@@ -23,12 +23,12 @@
23
23
  super.onCreate(savedInstanceState)
24
24
  setContentView(R.layout.activity_main)
25
25
 
26
- val apiKey = "**********"
26
+ val apiKey = "******"
27
- val mainUrl = "https://api.nhk.or.jp/v2/pg/list/130/g1/2022-01-28.json"
27
+ val mainUrl = "https://api.nhk.or.jp/v2/pg/list/130/g1/2022-01-29.json"
28
28
 
29
- val tv: TextView = findViewById(R.id.tv)
29
+ val tv:TextView = findViewById(R.id.tv)
30
30
  tv.setMovementMethod(ScrollingMovementMethod())
31
- val btn: Button = findViewById(R.id.btn)
31
+ val btn:Button = findViewById(R.id.btn)
32
32
 
33
33
  btn.setOnClickListener {
34
34
  val nhk = "$mainUrl?key=$apiKey"
@@ -36,10 +36,10 @@
36
36
  }
37
37
  }
38
38
 
39
- private fun nhkTask(nhk: String) {
39
+ private fun nhkTask(nhk:String) {
40
40
  lifecycleScope.launch {
41
41
  val result = nhkBackgroundTask(nhk)
42
- nhkJsonTask(result)
42
+ nhkJsonTask(result)
43
43
  }
44
44
  }
45
45
 
@@ -49,48 +49,43 @@
49
49
 
50
50
  try {
51
51
  val nhkObj = URL(nhk)
52
- val br = BufferedReader(InputStreamReader(nhkObj.openStream()))
52
+ val br = BufferedReader(InputStreamReader(nhkObj.openStream()))
53
+
54
+ httpResult = br.use { it.readText() }
55
+ } catch (e: IOException) {
56
+ e.printStackTrace()
57
+ }
58
+ return@withContext httpResult
59
+ }
60
+ return response
61
+ }
53
62
 
54
- httpResult = br.use { it.readText() }
55
- } catch (e: IOException) {
56
- e.printStackTrace()
57
-
58
- }
59
- return@withContext httpResult
60
- }
61
- return response
62
- }
63
-
64
- private fun nhkJsonTask(result: String) {
63
+ private fun nhkJsonTask(result: String) {
65
- val tv: TextView = findViewById(R.id.tv)
64
+ val tv:TextView = findViewById(R.id.tv)
66
65
 
67
66
 
68
- try {
67
+ try {
69
- val jsonObj = JSONObject(result)
68
+ val jsonObj = JSONObject(result)
70
69
 
70
+ val nhkAry = jsonObj.getJSONArray("g1")
71
+ val nhkObj = nhkAry.getJSONObject(0)
71
- val nhkName =jsonObj.getString("title")
72
+ val nhk = nhkObj.getString("title")
72
- tv.text =nhkName
73
-
74
- val nhkJSONArray =jsonObj.getJSONArray("title")
75
- val nhkJSON =nhkJSONArray.getJSONObject(0)
76
- val nhk =nhkJSON.getString("start_time")
77
- tv.text =nhk
73
+ tv.text = nhk
78
-
79
- tv.text = jsonObj.toString(2)
74
+
80
75
  } catch (e: JSONException) {
81
- e.printStackTrace()
76
+ e.printStackTrace()
82
77
  }
78
+ }
79
+ }
83
80
 
84
81
 
85
- }
86
- }
87
82
  ```
88
83
  【NHK 番組表API】を作成にあたり、不明点がありご回答いただきたいです。
89
84
  解決策を教えていただきたいです。
90
85
  下記URL貼っていますので、確認いただきたいです。
91
86
 
92
87
  Buttonを押したら、番組名と開始時間、終了時間が出る番組表アプリを作りたいです。
93
- "title" "start_time"と記載し、実行しましたが表示されませんでした。
88
+ 現在"title"と記載し、実行しましたが表示されませんでした。
94
89
  数日試行錯誤しましたが、まだ分からずにいます。
95
90
  ご教授いただければ幸いです。
96
91
  よろしくお願いします。

1

追記

2022/01/27 09:10

投稿

MM_LL
MM_LL

スコア18

test CHANGED
@@ -1 +1 @@
1
- Android Studio API
1
+ お助けください。Android Studio API
test CHANGED
@@ -3,6 +3,7 @@
3
3
 
4
4
  import androidx.appcompat.app.AppCompatActivity
5
5
  import android.os.Bundle
6
+ import android.text.method.ScrollingMovementMethod
6
7
  import android.widget.Button
7
8
  import android.widget.TextView
8
9
  import androidx.lifecycle.lifecycleScope
@@ -17,57 +18,84 @@
17
18
  import java.net.URL
18
19
 
19
20
  class MainActivity : AppCompatActivity() {
21
+
20
22
  override fun onCreate(savedInstanceState: Bundle?) {
21
23
  super.onCreate(savedInstanceState)
22
24
  setContentView(R.layout.activity_main)
23
-
24
- val apiKey = "****************"
25
- val mainUrl = "https://api.nhk.or.jp/v2/pg/list/"
26
25
 
26
+ val apiKey = "**********"
27
+ val mainUrl = "https://api.nhk.or.jp/v2/pg/list/130/g1/2022-01-28.json"
28
+
27
- val tv:TextView = findViewById(R.id.tv)
29
+ val tv: TextView = findViewById(R.id.tv)
30
+ tv.setMovementMethod(ScrollingMovementMethod())
28
- val btn:Button = findViewById(R.id.btn)
31
+ val btn: Button = findViewById(R.id.btn)
29
32
 
30
33
  btn.setOnClickListener {
31
- val nhk = "$mainUrl$apiKey"
34
+ val nhk = "$mainUrl?key=$apiKey"
32
35
  nhkTask(nhk)
33
36
  }
34
37
  }
38
+
35
- private fun nhkTask(nhk:String) {
39
+ private fun nhkTask(nhk: String) {
36
40
  lifecycleScope.launch {
37
41
  val result = nhkBackgroundTask(nhk)
42
+ nhkJsonTask(result)
38
43
  }
39
44
  }
45
+
40
- private suspend fun nhkBackgroundTask(nhk: String):String{
46
+ private suspend fun nhkBackgroundTask(nhk: String): String {
41
- val response = withContext(Dispatchers.IO){
47
+ val response = withContext(Dispatchers.IO) {
42
48
  var httpResult = ""
43
49
 
44
50
  try {
45
51
  val nhkObj = URL(nhk)
46
52
  val br = BufferedReader(InputStreamReader(nhkObj.openStream()))
47
53
 
48
- httpResult = br.readLine()
54
+ httpResult = br.use { it.readText() }
49
- }catch (e:IOException){
55
+ } catch (e: IOException) {
50
56
  e.printStackTrace()
51
- }catch (e:JSONException){
57
+
52
- e.printStackTrace()
53
58
  }
54
59
  return@withContext httpResult
55
60
  }
56
61
  return response
57
62
  }
58
- private fun nhkJsonTask(result: String){
59
- val tv:TextView = findViewById(R.id.tv)
60
63
 
64
+ private fun nhkJsonTask(result: String) {
65
+ val tv: TextView = findViewById(R.id.tv)
66
+
67
+
68
+ try {
61
- val jsonObj = JSONObject(result)
69
+ val jsonObj = JSONObject(result)
70
+
62
- val nhkName = jsonObj.getString("name")
71
+ val nhkName =jsonObj.getString("title")
63
- tv.text = nhkName
72
+ tv.text =nhkName
73
+
74
+ val nhkJSONArray =jsonObj.getJSONArray("title")
75
+ val nhkJSON =nhkJSONArray.getJSONObject(0)
76
+ val nhk =nhkJSON.getString("start_time")
77
+ tv.text =nhk
78
+
79
+ tv.text = jsonObj.toString(2)
80
+ } catch (e: JSONException) {
81
+ e.printStackTrace()
82
+ }
83
+
84
+
64
85
  }
65
86
  }
66
87
  ```
67
88
  【NHK 番組表API】を作成にあたり、不明点がありご回答いただきたいです。
68
89
  解決策を教えていただきたいです。
69
- URL貼っていますので確認いただきたいです。
90
+ 下記URL貼っていますので確認いただきたいです。
91
+
92
+ Buttonを押したら、番組名と開始時間、終了時間が出る番組表アプリを作りたいです。
93
+ "title" "start_time"と記載し、実行しましたが表示されませんでした。
94
+ 数日試行錯誤しましたが、まだ分からずにいます。
95
+ ご教授いただければ幸いです。
96
+ よろしくお願いします。
97
+
70
- [リンク](https://api-portal.nhk.or.jp/doc-list-v2-con)
98
+ [URL](https://api-portal.nhk.or.jp/doc-list-v2-con)
71
99
 
72
100
  【基本情報】
73
101
  ・開発環境 Android Studio
@@ -87,8 +115,3 @@
87
115
  implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.3.0"}
88
116
  を追加しています。
89
117
 
90
- イメージは、Buttonを押したらTextViewに表示されるようにしたいです。
91
- 表示させたいAPINameは、何でも大丈夫です。
92
- 表示させ方を学びたいです。
93
- 不備が分からず、試行錯誤しましたが分からずにいます。
94
- ご回答いただけたら嬉しいです。