2011-12-28 14 views
1

私はListViewでAlertDialogを作成し、アダプタには要素CheckAll/UncheckAll要素がプログラムによって作成されています。 これは機能します。しかし、私が画面に触れることで項目をチェックしているときは、checkallを押してから、チェックされた要素のチェックを外してください。alertdialog listview uncheck

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

更新: 私はバグが発生したときに見つけます。 Iバグが発生したパラメータcheckedItemsを設定する機能で

setMultiChoiceItems(たCharSequence []アイテム、ブール[] checkedItems、DialogInterface.OnMultiChoiceClickListenerリスナー)

場合。そして、私がcheckedItemsパラメータnullバグを設定しない場合は発生しません。 ご存じですか?

UPDATE:詳細datailsはhere

答えて

1

getCheckItemIds() このメソッドは推奨されませんを見てのために私は、バグトラッカーのGoogleで問題を開きます。代わりにgetCheckedItemIds()を使用してください。

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

+0

私は(使用するAPIレベル7 getCheckItemIdsだが)APIレベル8をrequriesの項目がチェックされている場合でも、私は8にAPIレベルを変更しましたが、getCheckedItemIdsは常に空の配列を返します。主なエラーは残った – silentnuke

関連する問題