0

我在 MultipleChoiceDialog 中显示对象列表。另一个列表包含所有已检查的对象。

我的清单:

List<Participant> participants = datasourceParticipant.getAllParticipants();
List<Participant> participantsConference = datasourceParticipant.getAllParticipants(conference.getId());

为了在 MultipleChoiceDialog 中显示它们,我像这样构建我的列表:

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());
}

之后,我创建了必要的字符串数组......

final CharSequence[] items = participantsNames.toArray(new CharSequence[participantsNames.size()]);

在 MultipleChoiceDialog 中显示它

builder.setMultiChoiceItems(items, null, null);

如何将checkedItems 添加到MultipleChoiceDialog。还是有更简单的方法来做到这一点?

4

1 回答 1

1

boolean[]您必须使用要检查的值传入 a而不是 null 。最直接的方法是使用一个集合:

 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);

为此,您的 Participant 类必须实现hashCode()

于 2012-05-09T13:08:55.680 回答