Параметр, указанный как ненулевое, имеет значение null: метод kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, параметр convertView - PullRequest
0 голосов
/ 15 декабря 2018

Я получил эту ошибку сразу после преобразования кода адаптера в Kotlin:

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView
    at ...MyAdapter.getView(Unknown Source:35)
    at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)
    at android.widget.AbsListView.obtainView(AbsListView.java:2366)

Ошибка возникает при накачивании строки:

class LegalAdapter internal constructor(private val activity: Activity, private val list: ArrayList<Item>) : BaseAdapter() {

    override fun getView(position: Int, convertView: View, parent: ViewGroup): View {

    val layoutInflater = activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater

    @SuppressLint("ViewHolder")
    val row = layoutInflater.inflate(R.layout.legal_list_item, parent, false) //exception is throw here

Видимо, некоторые параметры, которые не должныбыть нулем равняется нулю, и kotlin проверить это.Проблема в том, что я даже не могу отладить новый код kotlin.

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Метод getView() является частью интерфейса Adapter и определен в Java. Документация здесь .Важной частью является примечание о параметре convertView:

Представление : старый вид, который можно использовать повторно, если это возможно.Примечание: Вы должны проверить, что это представление не является нулевым и имеет соответствующий тип перед использованием.

Это означает, что вполне допустимо, чтобы инфраструктура передавала null значения для convertView этомуметод (это означает, что вам нужно создать новое представление и вернуть его, а не перерабатывать старое представление).

В свою очередь, это означает, что определение Kotlin convertView должно иметь тип View?,не просто View.Поэтому измените свою подпись функции на это:

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View
0 голосов
/ 15 декабря 2018

Сделать convertView обнуляемым:

convertView: View?

Я не уверен, почему номер строки неправильный, но трассировка стека говорит вам, где искать в сообщении об ошибке.

...