私はコトリンが初めてです。他の非常に興味深いものの中でも、ドキュメンテーション によると、を必要とせずにアクティビティのビューを使用できるAndroid 拡張機能を見つけましたfindViewById
。
実際には、インポートに次の行を追加するだけで非常にうまく機能します。
import kotlinx.android.synthetic.main.<layout>.*
問題は、2 つの異なるレイアウトに同じ id (つまり、合成プロパティの同じ名前) を持つウィジェットが含まれている場合です。
たとえばTextView
、 id を持つ 2 つの異なる がありtxtTitle
ます。最初のものはアクティビティにあり、2 つ目はアダプター内で使用されるレイアウトに属しているとします。
最初の TextView (アクティビティのもの) でメソッドを呼び出そうとすると、呼び出しが別のビューで行われるかのように、期待される結果が表示されません。これの確認として、 を呼び出すと、予想されたものではなくtxtTitle.parent
、他の親と兄弟が表示されます。txtTitle
私は何か間違ったことをしていますか?この問題を回避するために私が見つけた唯一の方法は、すべてのレイアウトで別の名前を使用するか、引き続き使用するfindViewById
ことですが、この言語機能を無駄にするのは残念です...