当前位置: 首页 > 知识库问答 >
问题:

静态编程语言构造函数ArrayAdapter无法识别

仲孙信瑞
2023-03-14

我在静态编程语言中扩展ArrayAdapter时遇到了问题。

这里的代码:

class SpinnerArrayAdapter(context: Context?, resource: Int, list: ArrayList<Pair<Long, String>>) : ArrayAdapter<Pair<Long, String>>(context, resource, list) {
    override fun getCount(): Int {
        return list.size //error list is unresolved
    }
}

编辑与ArrayAdapter扩展无关。我的问题是构装师的理解。

共有3个答案

巫马欣嘉
2023-03-14
class MainActivity : AppCompatActivity(),AdapterView.OnItemSelectedListener {

    var languages = arrayOf("English", "French", "Spanish", "Hindi", "Russian", "Telugu", "Chinese", "German", "Portuguese", "Arabic", "Dutch", "Urdu", "Italian", "Tamil", "Persian", "Turkish", "Other")

    var spinner:Spinner? = null
    var textView_msg:TextView? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        textView_msg = this.msg

        spinner = this.spinner_sample
        spinner!!.setOnItemSelectedListener(this)

        // Create an ArrayAdapter using a simple spinner layout and languages array
        val aa = ArrayAdapter(this, android.R.layout.simple_spinner_item, languages)
        // Set layout to use when the list of choices appear
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
        // Set Adapter to Spinner
        spinner!!.setAdapter(aa)

    }

    override fun onItemSelected(arg0: AdapterView<*>, arg1: View, position: Int, id: Long) {
        textView_msg!!.text = "Selected : "+languages[position]
    }

    override fun onNothingSelected(arg0: AdapterView<*>) {

    }
}

它可能对你有帮助,试试看。

陈知
2023-03-14

如果您没有将构造函数参数声明为valvar,则只能在init块中访问它们,因为它们不是属性:

class Test(context: Context) {

    private lateinit var applicationContext: Context

    init {
        applicationContext = context.applicationContext
    }
}

如果您需要在init块之外访问它们,您应该根据您的需要使用valvar将它们标记为属性:

class Test(val context: Context) {

    private lateinit var applicationContext: Context

    fun test() {
        applicationContext = context.applicationContext
    }
}
杨安歌
2023-03-14

我试过你的问题,发现了同样的问题。

但通过使用val关键字调用构造函数,它就可以工作了。

class SpinnerArrayAdapter(context: Context?, val resource: Int, val list: ArrayList<Pair<Long, String>>) : ArrayAdapter<Pair<Long, String>>(context, resource, list) {
    override fun getCount(): Int {
        return list.size
    }
}

反正我也不知道这种情况下为什么需要val关键字,我来挖掘一下,找到问题所在。

 类似资料:
  • 问题内容: 大家好,我正在尝试在选项卡中列出文本数据,这是我的方法 无法解析构造函数ArrayAdapter 的方法,这是我的主要活动。任何帮助将不胜感激,我仍然是一个noobie 。 问题答案: 更改 至 你可以在使用。

  • 这个例子来自我正在学习的一门Kotlin课程: 如果我喜欢使用这样的主构造函数: 在这种情况下,我必须如何编写getter/setter?

  • 问题内容: 我知道这个问题已经被问了一百万遍了,但是我已经尝试了所有可以找到的解决方案,但是仍然行不通。我试过为上下文调用“ this”,试过了getActivity,试过了getContext(),但似乎没有什么特别适合此片段。相同的代码确实在不同的片段中起作用,这就是为什么我真的很困惑。任何帮助表示赞赏。 我的LoginFragment,我的问题可以在setReservations()中找到:

  • 本文向大家介绍C#静态构造函数?相关面试题,主要包含被问及C#静态构造函数?时的应答技巧和注意事项,需要的朋友参考一下 最先被执行的构造函数,且在一个类里只允许有一个无参的静态构造函数 执行顺序:静态变量>静态构造函数>实例变量>实例构造函数  

  • 我有静态函数,它仅限于一些上下文(例如仅用于文档)。有两种替代方法可以将其定义为顶层函数或对象中的函数。 1. 2. 顶级函数的优点是它没有被包装在一个对象中,缺点是它可以从任何地方访问,没有类名前缀。这种情况有优点还是缺点或最佳实践?

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?