I implement a similar behavior custom adapter by adding a "special" field in my Item class called isSelectedOnList (Boolean). Then in the OnItemClickListener I do like this:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mapListView.setItemChecked(position, true);
...Get your item here...getItem(position).setIsSelectedOnList(!getItem(position).isSelectedOnList());
}
});
So now my Items Array knows which items are selected. Then in the getView method I update the checkbox which is in my item layout xml:
@Override
public View getView (int position, View view, ViewGroup parent) {
view = (LinearLayout) inflater.inflate(layoutId, null);
final ListItem entry = getItem(position);
// setting some textviews here and so on...
CheckBox checkBox = (CheckBox) view.findViewById(R.id.m_l_i_checkbox);
// my problem ^
checkBox.setChecked(ListItem.isSelectedOnList());
return view;
}
This solution works for me pretty well so I didn't care to look in android's internal mechanism for selected items in multi-select lists.
Hope this helps...