多选对话框中的已检查项目

时间:2012-05-09 12:52:14

标签: android

我在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。或者有更简单的方法吗?

1 个答案:

答案 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();