前提
ここ数ヶ月前からAndroid+Kotlinでアプリ開発を始めた初心者です。
RecyclerViewを使って表敬式のレイアウトを作っていますが、RecyclerViewの外から値を渡すことによってRecyclerViewの中のTextViewの背景色を変えたいと思っています。
例えば、ButtonのsetOnClickListenerでボタンを押されたときに、RecyclerViewの中のTextViewの背景色を変えるような仕組みを考えています。
あまりいい方ではないと、自分でわかっていつつも^^;、他にいい方法が思い浮かばなかったので、
RecyclerView.Adapterの中のcompanion objectの中にpublicな変数を定義し、これを外から更新することによって、TextViewの背景色を変える仕組みを作りました。
実現したいこと
companion objectの中にpublicな変数はJavaでいうとstaticなクラス変数なので、コーディング的にあまりよろしくないかと・・・
(Android的にはstaticなクラス変数はなにか悪影響があるのか・・・?)
他に、もっとエレガント&スマートな方法はあるのでしょうか?
該当のソースコード
class MyAdapter(val applicationContext: Context): RecyclerView.Adapter<MyAdapter.ViewHolder>() { companion object { // ButtonのsetOnCliclListenerでtrue/falseを変えてやる var flag = false } ・・・・ class ViewHolder(binding: MyViewBinding) : RecyclerView.ViewHolder(binding.root) { var text1: TextView var test2: TextView var text3: TextView init { text1 = binding.text1 text2 = binding.text2 text3 = binding.text3 } ・・・・ } ・・・ override fun onBindViewHolder(holder: ViewHolder, position: Int) { if (flag) { // text1、text2、text3の背景色を赤くする } else { // text1、text2、text3の背景色を青くする } } }
補足情報(FW/ツールのバージョンなど)
AndroidStudio Dolphine 2021.3.1
Kotlin 1.7
Android R(11) API 30

回答2件
あなたの回答
tips
プレビュー