2010-05-03 16 views
6

Özel bir BaseAdapter ile bir ListView var. Liste öğeleri, bir veritabanından bir özelliği temsil etmesi gereken CheckBox'ları içerir.Onay Kutusu ile Android ListView: otomatik olarak işaretler

CheckBox.setOnCheckedChangeListener'ı değişiklikleri algılamak için yeni bir OnCheckedChangeListener ile kullanıyorum, bu nedenle CheckBox'ın geçerli durumuna bağlı olarak veritabanını değiştirebilirim. Şimdiye dek oldukça basit şeyler. Bununla birlikte, listede aşağıya doğru kaydırırken, daha önce CheckBox'ların işaretli olmadığından emin olun. Görüşlerin geri dönüştürüldüğü anda bu olacağından şüpheleniyorum (convertView/ViewHolder tekniğini kullanıyorum).

Bunu nasıl durdurabilirim? Neyin yanlış gidiyor?

Şimdiden teşekkürler.


Düzenleme: şeyler biraz daha anlaşılır kılmak için, sorun görünümleri geri dönüşüm nasılsa isChecked ile OnCheckedChangeListener # onCheckedChanged (buttonView, isChecked) == false çağırır olmasıdır.

cevap

10

Görünüşe göre sorun, convertView.findViewById() kullanarak onay kutusunu alarak, görünümün geri dönüştürülmesi durumunda onCheckedChangeListeners hala bozulmamıştı. Checkbox.setOnCheckedChangeListener (null) çağrısı hile yaptı.

+1

Bir ExpandableListView'ın alt görünümünde onay kutusunu kullanırken aynı sorunu yaşıyordum ve aldatmaca benim için de çalıştı. Bunu geri dönüştürüyoruz (yani convertView boş değil) olup olmadığını kontrol ettiğim getChildView (..) 'a koymam gerekiyordu ve bu durumda onay kutusunun OnCheckedChangeListener değerini belirle. Çözüm için teşekkürler. –

+0

Benzer bir sorun yaşıyorum, ancak nasıl düzeltileceğini bilmiyorum: http://stackoverflow.com/questions/4586442/listview-from-cursor-with-checkbox herhangi bir fikir? – ekawas

+0

Onun eski bir iş parçacığı biliyorum ama aynı sorun var.OnCheckedChangeListener yöntemi rasgele denir gibi görünüyor. Tam olarak checkbox.setOnCheckedChangeListener (null) ile ne demek istiyorsunuz? Beni şaşırtan null! İsterseniz koduma bir göz atın: http://stackoverflow.com/questions/5444355/android-listview-with-checkbox-problem – mixkat