前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Android: ViewBindingでViewHolderの記述をシンプルにする

課題

これまでButterKnifeを使ってFragment及びViewHolderのView操作を記述してきたが、ViewBinding登場に伴いButterKnifeはdeprecatedになった。 ViewHolderをViewBindingを使って書き換えたいが、どうすればよいか。

対応

user.xmlとかいうユーザー一覧のアイテムを表すlayout.xmlがあったとする。

class UsersAdapter(val context: Context, val items: ArrayList<*>) : 
     RecyclerView.Adapter<RecyclerView.ViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int):
        RecyclerView.ViewHolder {
        when (viewType) {
            TYPE_USER -> return UserViewHolder (
                UserBinding.inflate(inflater, parent, false)
            )
       }
    }

    inner class UserViewHolder(val binding: UserBinding) :
        RecyclerView.ViewHolder(binding.root)
}

bindingがViewの情報を全部持ってるのでViewHolderがほとんど不要になってる。 めっちゃ楽になりましたわ。