2011-12-28 2 views
1

Я создаю AlertDialog с ListView, а адаптер имеет элемент 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; 
      } 
     } 
    }; 

Update: я найти, когда происходит ошибка. , если в функции

setMultiChoiceItems (CharSequence [] пунктов, булевы [] CheckedItems, DialogInterface.OnMultiChoiceClickListener слушатель)

Я установил CheckedItems параметров эта ошибка возникает. И если я устанавливаю checkItems, то параметр null error не возникает. Есть идеи?

UPDATE: Я открываю вопрос о BugTracker Google, для более Datails выглядеть here

ответ

1

getCheckItemIds() Этот метод является устаревшим. Вместо этого используйте getCheckedItemIds().

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

+0

я Уровень использования API 7. getCheckItemIds() requries уровень апи 8. я изменился уровень апи до 8, но getCheckedItemIds всегда возвращает пустой массив, даже если детали проверяются. и основная ошибка осталась – silentnuke

Смежные вопросы