Kotlin移行5
- 2018.10.11
- Android
目的
- Javaで書かれたプロジェクトを少しずつKotlinで書き直す
- TestもKotlin化
- 備忘録的にちょこちょこ完了まで続ける
条件
- AndroidStudio3.2.0
- Java1.8.0_152
- Kotlin 1.2.70
- gradle 4.10.2
今回の作業予定内容
- 某リリース済アプリにKotlin Android Extensionsを適用したい
- Butterknifeをやめたい
前提
- ViewHolder実装部分にButterknifeを用いている
手順と具体的な作業
Before
HogeAadapter.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import kotlinx.android.synthetic.main.activity_listview_row.view.* ... inner class ViewHolderForDefault { @BindView(R.id.list_row) LinearLayout mRow; @BindView(R.id.title) TextView mTitle; @BindView(R.id.image) ImageView mThumbnail; ViewHolder(View view) { ButterKnife.bind(this, view); } } |
After
HogeAdapter.kt
1 2 3 4 5 6 |
class ViewHolder(view: View) { var mRow: LinearLayout? = view.list_row var mTitle: TextView? = view.title var mThumbnail: ImageView? = view.image } |
まとめ
ぐぐると、ViewHolderでもExtensionsいける的な記事たくさんみつかって助かった。
ポイントはimport時通常のレイアウト読み込みではなく最後にviewをつけることと、ViewHolder内でのIDへのアクセスの仕方だった。
参考
https://stackoverflow.com/questions/45951792/kotlin-android-extensions-in-viewholder/50482368
コメントを書く