"Nothing" 需要调用函数 - Kotlin
"Nothing" required in call function - Kotlin
我写了一个从外部数据库中提取内容并将它们插入到列表中的方法。我写了这个方法,但它在 call[j]!!.enqueue(object : Callback {:
上给了我一个错误
private val call = arrayOfNulls<Call<*>?>(NUM_ROWS)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.main_fragment, container, false)
recyclerView[0] = view?.findViewById(R.id.rc_view)
recyclerView[1] = view?.findViewById(R.id.rc_view2)
recyclerView[2] = view?.findViewById(R.id.rc_view3)
loadMovie()
return view
}
private fun loadMovie() {
val apiService = getClient(context)!!.create(ApiService::class.java)
for (j in 0 until NUM_ROWS) {
call[j] = apiService.getDiscover(BuildConfig.API_KEY, Values.LANGUAGE, Values.SORT_BY[0], Values.ADULT, GENRE.get(0), Values.PAGE[0])
}
for (j in 0 until NUM_ROWS) {
call[j]!!.enqueue(object : Callback<MovieResponse> {
override fun onResponse(call: Call<MovieResponse>, response: Response<MovieResponse>) {
//TODO
}
override fun onFailure(call: Call<MovieResponse>, t: Throwable) {}
})
}
}
错误说:
类型不匹配 - 必需:无
问题是,如果我将它作为 Nothing 插入,它将 return 一个空列表。我该如何解决?
Call<*>
表示它可以是 Call<MovieResponse>
、Call<Int>
或其他任何形式;您不能将 Callback<MovieResponse>
入队,因为它可能不是 Call<MovieResponse>
。您应该能够简单地将第一行更改为
private val call = arrayOfNulls<Call<MovieResponse>>(NUM_ROWS)
(你不需要在这里指定 ?
因为它 returns Array<T?>
无论如何。)
我写了一个从外部数据库中提取内容并将它们插入到列表中的方法。我写了这个方法,但它在 call[j]!!.enqueue(object : Callback {:
上给了我一个错误 private val call = arrayOfNulls<Call<*>?>(NUM_ROWS)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.main_fragment, container, false)
recyclerView[0] = view?.findViewById(R.id.rc_view)
recyclerView[1] = view?.findViewById(R.id.rc_view2)
recyclerView[2] = view?.findViewById(R.id.rc_view3)
loadMovie()
return view
}
private fun loadMovie() {
val apiService = getClient(context)!!.create(ApiService::class.java)
for (j in 0 until NUM_ROWS) {
call[j] = apiService.getDiscover(BuildConfig.API_KEY, Values.LANGUAGE, Values.SORT_BY[0], Values.ADULT, GENRE.get(0), Values.PAGE[0])
}
for (j in 0 until NUM_ROWS) {
call[j]!!.enqueue(object : Callback<MovieResponse> {
override fun onResponse(call: Call<MovieResponse>, response: Response<MovieResponse>) {
//TODO
}
override fun onFailure(call: Call<MovieResponse>, t: Throwable) {}
})
}
}
错误说:
类型不匹配 - 必需:无
问题是,如果我将它作为 Nothing 插入,它将 return 一个空列表。我该如何解决?
Call<*>
表示它可以是 Call<MovieResponse>
、Call<Int>
或其他任何形式;您不能将 Callback<MovieResponse>
入队,因为它可能不是 Call<MovieResponse>
。您应该能够简单地将第一行更改为
private val call = arrayOfNulls<Call<MovieResponse>>(NUM_ROWS)
(你不需要在这里指定 ?
因为它 returns Array<T?>
无论如何。)