Reputation: 321
I'm displaying a List of Objects in a MultipleChoiceDialog. Another List contains all Objects who are already checked.
My Lists:
List<Participant> participants = datasourceParticipant.getAllParticipants();
List<Participant> participantsConference = datasourceParticipant.getAllParticipants(conference.getId());
In order to display them in the MultipleChoiceDialog, I build my List like this:
participantsNames = new ArrayList<String>();
for(int i = 0; i < this.participants.size(); i++) {
participantsNames.add(i, participants.get(i).getFirstname() + " " + participants.get(i).getLastname());
}
participantConferenceNames = new ArrayList<String>();
for(int i = 0; i < this.participantsConference.size(); i++) {
participantConferenceNames.add(i, participantsConference.get(i).getFirstname() + " " + participantsConference.get(i).getLastname());
}
Afterwards, I create the necessary String array ...
final CharSequence[] items = participantsNames.toArray(new CharSequence[participantsNames.size()]);
to display it in the MultipleChoiceDialog
builder.setMultiChoiceItems(items, null, null);
How do I add the checkedItems to the MultipleChoiceDialog. Or is there a much easier way to do it?
Upvotes: 0
Views: 1228
Reputation: 30168
You have to pass in a boolean[]
instead of null with the values that you want checked. The most straightforward way to accomplish this is to use a set:
Set<Participant> set = new HashSet();
set.addAll(datasourceParticipant.getAllParticipants(conference.getId()));
boolean[] checked = new boolean[participants.size()];
for (int i =0; i < participants.size(); i ++) {
checked[i] = set.contains(participants.get(i));
}
....
builder.setMultiChoiceItems(items, checked, null);
For that to work your Participant class must implement hashCode()
;
Upvotes: 1