2012-05-09 4 views
0

MultipleChoiceDialog에 개체 목록을 표시하고 있습니다. 다른 목록에는 이미 검사 된 모든 개체가 포함됩니다.다중 선택 대화 상자의 선택된 항목

내 목록 다음 MultipleChoiceDialog에이를 표시하기 위해

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

는,이처럼 내 목록을 구축 :

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

어떻게 checkedItem을 MultipleChoiceDialog에 추가합니까? 아니면 훨씬 쉬운 방법이 있습니까?

답변

1

확인해야하는 값으로 null 대신 boolean[]을 전달해야합니다. 이 작업을 수행하는 가장 간단한 방법은 세트 사용하는 것입니다 hashCode()를 구현해야합니다 참가자 클래스를 작동하는 것을 들어

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

을;

+0

두 번째, 세 번째 및 네 번째 시간 (등) 만 작동합니다. 그러나 그것은 처음으로 작동하지 않습니다. –

관련 문제