«Ничего» не требуется в функции вызова - Kotlin - PullRequest
0 голосов
/ 16 марта 2020

Я написал метод, который извлекает содержимое из внешней базы данных и вставляет его в список. Я написал этот метод, но он выдает ошибку при вызове [j] !!. Enqueue (объект: обратный вызов {:

    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) {}
            })
        }
    }

Ошибка говорит:

Несоответствие типов - Обязательно: Ничего

Проблема в том, что если я вставлю его как Ничто, он вернет пустой список. Как я могу решить?

1 Ответ

1 голос
/ 16 марта 2020

Call<*> означает, что это может быть Call<MovieResponse>, Call<Int> или что-либо еще; Вы не можете поставить в очередь Callback<MovieResponse>, потому что это не может быть Call<MovieResponse>. Вы можете просто изменить первую строку на

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

(вам не нужно указывать ? здесь, потому что она все равно возвращает Array<T?>.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...