#android #kotlin #retrofit
#Android #kotlin #модернизация
Вопрос:
Я разрабатываю приложение для Android, и я получаю скриншот ошибки ниже, когда я реализовал сетевой вызов в mainactivity.kt Я хочу знать, где я допускаю ошибку
ниже моего MainActivity.kt
class MainActivity : AppCompatActivity() {
private var adapter: CurrenciesAdapter? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
recycler_main.layoutManager = LinearLayoutManager(this@MainActivity)
adapter = CurrenciesAdapter(this)
recycler_main.adapter = adapter
if (isInternetAvailable()) {
getUsersData()
}
}
private fun getUsersData() {
showProgressBar()
var apiInterface: CurrenciesResponse = CurrencyClient().getApiClient()!!.create(
CurrenciesResponse::class.java
)
apiInterface.getCurrencies().enqueue(object : Callback <List<CurrencyResponse>> {
override fun onResponse(
call: Call<List<CurrencyResponse>>,
response: Response<List<CurrencyResponse>>)
{
hideProgressBar()
val currencyResponse = response.body()
adapter?.list = currencyResponse!!
}
override fun onFailure(call: Call<List<CurrencyResponse>>, t: Throwable) {
hideProgressBar()
Log.e("error", t.localizedMessage)
}
})
}
}
что я сделал, я изменил тип ответа с <List на CurrencyResponse, но я все еще получаю ответ ниже всего основного кода
https://gist.github.com/kyodgorbek/d0d9b3749ac64f15b4db87874cfe13e7
Комментарии:
1. разве это не ясно из ошибки? это желание
Callback <CurrencyResponse>
2. @a_local_nobody можете ли вы проверить следующую суть gist.github.com/kyodgorbek/d0d9b3749ac64f15b4db87874cfe13e7 Я сделал так, как вы мне сказали, но ошибка все еще происходит
3. У вас есть
<List<CurrencyResponse>>
где требуемый тип<CurrencyResponse>
4. @emkarachchi Я делаю именно то, что вы сказали, я хочу видеть внутри котировок CurrencyResponse, и я хочу показать это в recyclerview, если вы проверите мой класс адаптера, я уже реализовал это
Ответ №1:
Ваш getCurrencies()
метод в CurrenciesResponse.class
имеет возвращаемый тип CurrenciesResponse
, тогда как он должен быть List<CurrenciesResponse>
.
Вам нужно исправить свой retrofit's service interface
.
Комментарии:
1. он работает, но показывает белый экран
2. Есть разные вещи, которые могут пойти не так. Либо ответ не выполняется, либо адаптер представления recycler настроен неправильно. Для этого вам нужно отладить свой код. Что касается вашего вопроса, на него был дан ответ.
3. Я отмечу как принятый ответ, но можете ли вы также проверить мои XML-файлы, но вы сэкономили мое время
4. Ваши XML-файлы не являются проблемой. Я полагаю, что проблема может быть в вашем адаптере RecyclerView или в коде состояния ответа или в том, как ваши представления раздуваются. Для этого вам следует отладить свой код, чтобы точно определить, в чем проблема. Начните с того, получен ли ответ успешно или нет.
5. @karon dhillon Я проверил, что в mainactivity нет ошибки, я думаю, что есть какая-то проблема в адаптере, я думаю