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

質問編集履歴

2

2021/04/04 15:26

投稿

_kei
_kei

スコア26

title CHANGED
File without changes
body CHANGED
@@ -2,10 +2,8 @@
2
2
 
3
3
  Android開発勉強中の者です。Retrofitを使用した通信ができないため、質問させていただきます。具体的には、Retrofitを用いたinterfaceをどのように書けばよいかが分かりませんでした。
4
4
 
5
- [リクエスト先](https://raw.githubusercontent.com/Biuni/PokemonGO-Pokedex/master/pokedex.json)
5
+ リクエストのレスポンスとして返されたnameとimgをそれぞれテキスト、画像としてRecyclerViewを用いて描画したいです。その際、リストの型をうまく書くことができません。
6
6
 
7
- このリクエストのレスポンスとして返されたnameとimgをそれぞれテキスト、画像としてRecyclerViewを用いて描画したいです。その際、リストの型をうまく書くことができません。
8
-
9
7
  ### 該当のソースコード
10
8
 
11
9
  APIのsuspend関数の戻り値をどう書けばよいか分かりません。

1

問題文の修正

2021/04/04 15:26

投稿

_kei
_kei

スコア26

title CHANGED
File without changes
body CHANGED
@@ -8,15 +8,8 @@
8
8
 
9
9
  ### 該当のソースコード
10
10
 
11
- コードのsuspend関数の戻り値をどう書けばよいか分かりません。
11
+ APIのsuspend関数の戻り値をどう書けばよいか分かりません。
12
12
 
13
- ```kotlin
14
- interface PokemonApi {
15
- @GET("pokedex.json")
16
- suspend fun getPokemon(): Response<List<Pokemon>>
17
- }
18
- ```
19
-
20
13
  JSONを基に作成したdataクラス
21
14
  ```kotlin
22
15
  data class Pokemon(
@@ -75,30 +68,7 @@
75
68
  })
76
69
  }
77
70
  ```
78
- MainViewModel
79
- ```kotlin
80
- class MainViewModel(private val repository: Repository): ViewModel() {
81
71
 
82
- val pokemons: MutableLiveData<Response<List<Pokemon>>> = MutableLiveData()
83
-
84
- fun getPokemon(){
85
- viewModelScope.launch{
86
- val response: Response<List<Pokemon>> = repository.getPokemon()
87
- pokemons.value = response
88
- }
89
- }
90
- }
91
- ```
92
- Repository
93
- ```kotlin
94
- class Repository {
95
-
96
- suspend fun getPokemon(): Response<List<Pokemon>> {
97
- val response: Response<List<Pokemon>> = RetrofitInstance.api.getPokemon()
98
- return response
99
- }
100
- }
101
- ```
102
72
  Adapterのコンストラクタ内のpokemonListをどのように書けばよいのか分かりませんでした。型を上記のinterfaceと同じResponse<List<Pokemon>>にした場合、リストの中身を参照できず、onBindViewHolder等で怒られてしまいます。
103
73
  ```kotlin
104
74
  class PokemonAdapter(private var context: Context, private var pokemonList: List<Pokemon>) :
@@ -145,11 +115,6 @@
145
115
 
146
116
  ・interfaceで定義したsuspend関数の戻り値の型をResponseを使用せず、List<Pokemon>にしたが、その場合、実行時、JSONをパース出来ないと怒られてしまいます。
147
117
 
148
- 以下のように、data classを新しく定義してみるが、上記と同様にAdaoterをかくことができなかった。
118
+ 新しくdata classを定義してみるが、上記と同様にAdaoterをかくことができなかった。
149
- ```kotlin
150
- data class PokemonList(
151
- var pokemon: List<Pokemon>? = null
152
- )
153
- ```
154
119
 
155
120
  ・Retrofitでは、Resoonseではなく、Callというものも使用できるようなので、Callを試したが、うまく書くことができなかった。