我编写了一种从外部数据库中提取内容并将其插入到列表中的方法。我写了这个方法,但是在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,它将返回一个空列表。我该如何解决?
Call<*>
表示它可以是Call<MovieResponse>
,Call<Int>
或其他任何内容;您不能加入Callback<MovieResponse>
,因为它可能不是Call<MovieResponse>
。您应该可以简单地将第一行更改为
private val call = arrayOfNulls<Call<MovieResponse>>(NUM_ROWS)
((您无需在此处指定?
,因为它始终会返回Array<T?>
。]