88

私はkotlinが初めてです。クラスで迷惑なメソッドの代わりに合成メソッドを見つけて使用しようとしましfindViewByIdActivityが、「ビューで合成プロパティを呼び出したい場合 (アダプタークラスで便利)、kotlinx.android.synthetic.main もインポートする必要があることがわかりました。 。見る。*。" しかし、それがどのように機能するのか正確にはわかりませんか?例はありますか?

4

7 に答える 7

39

コトリング 1.1.4 アウト

詳細情報: https://antonioleiva.com/kotlin-android-extensions/

これをbuild.gradleに追加して、Kotlin Android Extentions を有効にする必要があります。

apply plugin: 'org.jetbrains.kotlin.android.extensions'
androidExtensions {
    experimental = true
}

この新しいバージョンの Kotlin 以来、Android 拡張機能にはいくつかの新しい興味深い機能が組み込まれています: 任意のクラスのキャッシュ (興味深いことに ViewHolder が含まれます)

ViewHolder (または任意のカスタム クラス) で使用します。このクラスはLayoutContainerインターフェースを実装する必要があることに注意してください。

class ViewHolder(override val containerView: View) : RecyclerView.ViewHolder(containerView), 
        LayoutContainer {

    fun bind(title: String) {
        itemTitle.text = "Hello Kotlin!"
    }
}
于 2017-08-18T07:17:56.527 に答える
11

あなたが必要

import kotlinx.android.synthetic.row_wall.view.*

その後、次のようなものがあります。

convertView.titleText.text = item.title

要点は、view.* が View クラスに拡張機能を導入することです。

于 2015-11-11T17:42:50.997 に答える
4

最新バージョン l;. を使用している場合は、experimental = true を追加する必要はありません。

プロジェクト レベルの Gradle で

classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.21'

アプリレベルのGradleでは

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions' //These should be on the top of file.

そして依存関係で..

implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21'

以下のようにインポートします

import kotlinx.android.synthetic.main.your_layout_file_name.view.*

と例

import kotlinx.android.synthetic.main.item_animal.view.*

class AnimalVH(parent: ViewGroup, layoutID: Int) : BaseViewHolder<Animal>(parent, layoutID) {

    override fun bindData(animal: Animal) {
        itemView.tv_animal.text = animal.title
    }
}

BaseViewHolder の場所

abstract class BaseViewHolder<T>(parent: ViewGroup, layoutID: Int) : RecyclerView.ViewHolder(
    LayoutInflater.from(parent.context).inflate(layoutID, parent, false)
) {
    abstract fun bindData(model: T)
}
于 2019-02-15T11:12:51.020 に答える