The adapter.clear()
automatically call notifyDataSetChanged() (default behavior, I don't know if you changed). You don't need to use it again.
Adapter and listview are diferents things, you could want to change the itens from adapter without change the checked itens. That is why the checked itens are not unchecked.
You can use listView.clearChoices().