“什么都没有在调用函数中-Kotlin

问题描述 投票:0回答:1

我编写了一种从外部数据库中提取内容并将其插入到列表中的方法。我写了这个方法,但是在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,它将返回一个空列表。我该如何解决?

android kotlin call
1个回答
1
投票

Call<*>表示它可以是Call<MovieResponse>Call<Int>或其他任何内容;您不能加入Callback<MovieResponse>,因为它可能不是Call<MovieResponse>。您应该可以简单地将第一行更改为

private val call = arrayOfNulls<Call<MovieResponse>>(NUM_ROWS)

((您无需在此处指定?,因为它始终会返回Array<T?>。]

© www.soinside.com 2019 - 2024. All rights reserved.