【问题标题】:Dynamically create controls in android using Kotlin使用 Kotlin 在 android 中动态创建控件
【发布时间】:2017-05-23 14:49:03
【问题描述】:

使用 java 来动态创建控件,我们使用类似的东西 TextView textview=new TextView(getApplicationContext());

如何在 Kotlin 中完成相同的操作? var textview = TextView 不起作用,var textview as TextView也不起作用

不幸的是,还没有遇到任何好的 kotlin android 教程。

更新-实际上我正在尝试使用自定义布局创建动态列表视图。

【问题讨论】:

    标签: android kotlin kotlin-android-extensions


    【解决方案1】:

    你可以通过调用TextView的构造函数,像这样:

    var textview = TextView(this) // "this" being the Activity
    

    参见官方文档中的creating instances

    【讨论】:

    • 这很有帮助,但尝试为 var listadapter=ListAdapter(this) 之类的列表视图创建适配器不起作用。
    • Kotlin 语法很好,它会调用构造函数。但是,ListAdapter 是一个接口,因此它没有构造函数并且不能被实例化。您只能创建一个实现 ListAdapter 的具体子类。提示:创建一个扩展 BaseAdapter(实现 ListAdapter)的适配器类。虽然,这与 Kotlin 无关,它只是普通的 (java) Android sdk。
    • 我非常精通 android java.. 我正在试验它的 kotlin 语法。顺便说一句,感谢官方文档链接。 :)
    【解决方案2】:

    要动态创建一个textview,你必须调用textview的构造函数并将它存储在一个变量中,如下所示:

    var myTextview = TextView(this);
    

    您必须在活动或片段中编写此代码,因为this 将代表活动或片段。

    然后使用 textview 的所有方法,例如:setText();

    myTextview.setText("Hello");
    

    【讨论】:

      【解决方案3】:

      你也可以使用 var myTextView: TextView? = TextView(this) 将文本分配给 TextView myTextView?.setText("Hello")

      但 myTextView 变量不能为空。

      【讨论】:

        猜你喜欢
        • 2021-10-01
        • 2011-02-16
        • 1970-01-01
        • 1970-01-01
        • 2017-07-22
        • 2011-01-26
        • 2014-08-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多