Почему BaseAdapter не нуждается в скобках? - PullRequest
0 голосов
/ 18 февраля 2019

Я спрашиваю, почему я не могу написать это:

class myClass : BaseAdapter() {
        }

Вместо этого:

class myClass : BaseAdapter {
        }

BaseAdapter - это интерфейс.

1 Ответ

0 голосов
/ 18 февраля 2019

BaseAdapter - это класс abstract, а не interface.В Kotlin, если вы расширяете класс (abstract или другой), вам нужно использовать вызов конструктора.

Если вы начнете с этого:

import android.widget.BaseAdapter

class myClass : BaseAdapter() {

}

... youполучит ошибку:

Android Studio, Showing Error

Это потому, что вам не хватает функций, требуемых классом abstract.Если вы поместите текстовый курсор в область ошибки class myClass и нажмете Alt-Enter , вы можете выбрать «Методы реализации», выбрать все четыре метода, и Android Studio сгенерирует код TODO() реализаций кода.эти методы для вас:

import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter

class myClass : BaseAdapter() {
  override fun getView(
    position: Int,
    convertView: View?,
    parent: ViewGroup?
  ): View {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  }

  override fun getItem(position: Int): Any {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  }

  override fun getItemId(position: Int): Long {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  }

  override fun getCount(): Int {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
  }

}

На этом этапе у вас не должно быть дальнейших ошибок.

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