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

MultipleChoiceDialog に checkedItems を追加するにはどうすればよいですか。または、それを行うためのはるかに簡単な方法はありますか?

4

1 に答える 1

1

チェックする値を指定して、null の代わりに a を渡すboolean[]必要があります。これを実現する最も簡単な方法は、セットを使用することです。

 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 に答える