2011-12-28 4 views
1

ListView를 사용하여 AlertDialog를 만들고 어댑터에 요소 CheckAll/UncheckAll 요소가 프로그래밍 방식으로 있습니다. 이것은 작동합니다. 그러나 화면을 터치하여 항목을 검사 할 때 checkall을 누른 다음 선택된 요소가 선택 상태인지 확인 표시를 지우십시오.alertdialog listview 선택 취소

DialogInterface.OnMultiChoiceClickListener coloursDialogListener = new DialogInterface.OnMultiChoiceClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which, 
       boolean isChecked) { 

      ListView list = ((AlertDialog) dialog).getListView(); 
      long[] a = list.getCheckItemIds(); 
      if (which == 0) { 
       if (isChecked) { 
        for (int i = 0; i < list.getCount(); ++i) 
         list.setItemChecked(i, true); 
       } else { 
        for(int i=0;i<list.getCount();++i) 
         list.setItemChecked(i, false); 
       } 
       a = list.getCheckItemIds();//fucntion return empty array 
            //but on screen checked element is Check. 
       return; 
      } 
     } 
    }; 

업데이트 : 나는 버그가 발견되면 알게됩니다.

되는 setMulti (CharSequence를 [] 항목 부울 [] checkedItems, DialogInterface.OnMultiChoiceClickListener 리스너)

제가

파라미터 checkedItems 설정 함수의 경우에 버그가 발생. 그리고 내가 checkedItems 매개 변수 null 버그를 설정하지 않으면 발생합니다. 의견이 있으십니까?

업데이트 : 더 datails이 here

답변

1

getCheckItemIds() 이 방법이 사용되지 않습니다 보일 위해 나는 bugtracker 구글에 문제를 엽니 다. 대신에 getCheckedItemIds()를 사용하십시오.

http://developer.android.com/reference/android/widget/ListView.html

+0

은 내가 사용하는 API를 레벨 7 getCheckItemIds 해요() 나는 8 API 레벨을 변경 API 레벨 8 (GPT)를 사용하지만, getCheckedItemIds는 항상 항목이 확인 된 경우에도 빈 배열을 반환합니다. 주요 오류가 남아 있었다. – silentnuke