2011-05-10 5 views
0

AlertDialog.BuildersetMultiChoiceItems을 사용하여 복수 선택 AlertDialog을 만듭니다.OnMultiChoiceClickListener.onClick의 항목을 선택/선택 취소 하시겠습니까?

OnMultiChoiceClickListener 안에있는 항목을 선택/선택 취소하고 싶지만 어떻게 찾을 수 없습니까?

final List<User> users = Util.getUsers(); 
final String[] names = new String[users.size()]; 
final boolean[] checked = new boolean[users.size()]; 
for (int i=0; i < names.length; i++) { 
    names[i] = users.get(i).getName(); 
    checked[i] = selectedUsers.contains(users.get(i).getId()); 
} 
new AlertDialog.Builder(EventFormActivity.this) 
    .setTitle(R.string.schedule_for) 
    .setOnCancelListener(new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialog) { 
      updateScheduleForText(); 
     } 
    }) 
    .setMultiChoiceItems(names, checked, new DialogInterface.OnMultiChoiceClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
      if (isChecked) selectedUsers.add(users.get(which).getId()); 
      else selectedUsers.remove((Integer) users.get(which).getId()); 
      // check or uncheck other items? how? 
     } 
    }) 
    .show(); 

나는이 작업을 수행 할 수 있다고 볼 수있는 유일한 방법은 사용자 정의 ListAdapter, 또는 사용자 정의 대화 테마 Activity을 구현할 수 있습니다 :

여기 내 코드입니다.

답변

1

OnClick 메서드에서 가져온 DialogInterface는 AlertDialog 여야합니다. 그런 다음 getButton 함수를 사용하여 버튼 객체를 가져올 수 있으며 거기에서 다양한 버튼을 조작 할 수 있어야합니다.

편집 : 나는 당신이 함께 내가 찾은 예를 넣는 동안 ListView 작업 할거야, 지금은 문제를 이해하고 생각 이 already solved on SO 예/체크하여 OnMultiChoiceClickListener

에서 목록 항목의 선택을 취소하는 방법을 보여 그건
+0

버튼을 변경할 필요가 없습니다. 하나 이상의 선택 항목의 선택 상태를 변경해야합니다. – Felix