sebbl.sche
sebbl.sche

Reputation: 321

Checked items in Multiple Choice Dialog

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

Answers (1)

dmon
dmon

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

Related Questions