2012-05-09 58 views
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。還是有更簡單的方法來做到這一點?

回答

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

對於工作的參與者類必須實現hashCode();

+0

由於某些原因,它只處理第二,第三和第四次(等)。但它不是第一次工作。 –

相關問題