我在MultipleChoiceDialog中显示一个对象列表。另一个列表包含已经检查过的所有对象。
我的名单:
List<Participant> participants = datasourceParticipant.getAllParticipants();
List<Participant> participantsConference = datasourceParticipant.getAllParticipants(conference.getId());
为了在MultipleChoiceDialog中显示它们,我像这样构建我的List:
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());
}
之后,我创建了必要的String数组......
final CharSequence[] items = participantsNames.toArray(new CharSequence[participantsNames.size()]);
将其显示在MultipleChoiceDialog
中builder.setMultiChoiceItems(items, null, null);
如何将checkedItems添加到MultipleChoiceDialog。或者有更简单的方法吗?
答案 0 :(得分:1)
您必须使用要检查的值传入boolean[]
而不是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()
;