I'm trying to create a custom list which will have checkboxes that allow you to select several items from the list.
The list with the checkboxes is displayed ok but if i check a checkbox and then scroll other items further down the list are also checked.
Its basically the same problem as here
I understand that it has something to do with the way android recycles the view but I cant see how to fix this! Can somebody help me???
Thanks -- Mike
You need a data structure to keep track of which rows are checked. This could be as simple as a bool[] checked
.
In your getView
, make sure that you set the checkbox state to the contents of checked[position]
. You should also set an OnCheckedChangedListener on your check boxes in getView
so that they update your data with checked[position] = isChecked
.
Yes, the rows in a ListView
are recycled, so make sure to populate all the appropriate data for a row before you leave getView
.
You could try implementing OnClickListener for checkbox instead of OnCheckChangedListener. It worked for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With