お世話になっております。
Android開発初心者のものです。
現在Android開発にてCustomListViewを使用してSwitchを表示して
選択状態のイベント取得、変更するという処理を実装しているのですが動作が上手く行きません。
具体的にはスクロールすると選択していない行が選択されたり、
スクロールを戻すと選択したセルの状態が未選択状態に戻ってしまったりしてしまいます。
原因はListViewの再利用時に前のセルの状態が引き継がれているからと思ったのですが、
Adapter#getViewにてViewHolderの値を設定しなおしても上手く行きません。
下記はCustomAdapterのgetViewのコードになります。
Kotolin
1 override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View { 2 var view = convertView 3 val viewHolder: ViewHolder 4 5 if(view == null) { 6 val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater 7 view = inflater.inflate(R.layout.list_item_binding_test, null) 8 viewHolder = ViewHolder(view) 9 view?.tag = viewHolder 10 } else { 11 viewHolder = view.tag as ViewHolder 12 } 13 //値を設定 14 viewHolder.name?.text = (getItem(position) as BindingTestValue).name 15 viewHolder.term?.text = (getItem(position) as BindingTestValue).term 16 17 //Switchの状態変更イベントのリスナー 18 viewHolder.isEnable?.setOnCheckedChangeListener(object : CompoundButton.OnCheckedChangeListener { 19 override public fun onCheckedChanged(buttonView:CompoundButton?, isChecked:Boolean) { 20 //リストの値を更新 21 (getItem(position) as BindingTestValue).isEnable = false 22 } 23 }); 24 viewHolder.isEnable?.isChecked = (getItem(position) as BindingTestValue).isEnable 25 26 return view as View 27 }
お手数ですがアドバイス等ございましたらご教授頂けましたら幸いです。
何卒宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー