2013-05-23 4 views
0

Мне нужно снять флажок checkmark programmaticaly, но контрольный список находится в диалоговом окне. Это изменяет решение? То, что я до сих пор:Снимите флажок с контрольного списка AlertDialog programmaticaly

CharSequence[] items = itemList.toArray(new CharSequence[itemList.size()]); 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setTitle("Select categories"); 

builder.setMultiChoiceItems(items, null, 
new DialogInterface.OnMultiChoiceClickListener() { 

public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
    if (isChecked){ 
    if(chosenCat.size() < 10){ 
     chosenCat.add(items[which].toString()); 
    }else{ 
     Toast.makeText(getApplicationContext(), "Max 10 categories to compare.", Toast.LENGTH_SHORT).show(); 
     //uncheck 
     items.isChecked = false; // --> wrong 
     chosenCat.remove(items[which].toString()); 
    } 
    }else{ 
    chosenCat.remove(items[which].toString()); 
    } 
} 
}); 
+0

Собственно, что вы хотите? вы хотите показать список с полем предупреждения? Вы можете использовать представление списка, как предупреждение диалог, используя тему в манифесте .. – itsrajesh4uguys

+0

Посмотреть предыдущий пост ФОТ [setItmChecked] [1] [1]: http://stackoverflow.com/questions/5067641/how -uncheck-предметы-в-alertdialog-setmultichoiceitems – Daniele75

+0

См предыдущий пост [SetItemCheck] [1] [1]: http://stackoverflow.com/questions/5067641/how-uncheck-items-in- alertdialog-setmultichoiceitems – Daniele75

ответ

0

Pass boolean[] в builder.setMultiChoiceItems, который показывает состояние флажок (проверено/непроверенные) для флажков добавил respectively.Try этот пример кода

boolean[] checkboxStatusArray = {true,false}; 

CharSequence[] items = itemList.toArray(new CharSequence[itemList.size()]); 
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 
builder.setTitle("Select categories"); 

builder.setMultiChoiceItems(items, checkboxStatusArray, 
new DialogInterface.OnMultiChoiceClickListener() { 

public void onClick(DialogInterface dialog, int which, boolean isChecked) { 


         checkboxStatusArray[1] = true;//This line will enable second check box 



    } 
}); 

builder.show(); 
+0

final boolean [] checkboxStatusArray = {true, false}; \t \t \t \t \t \t CharSequence [] = {пунктов "один", "два", "три"}; \t \t \t AlertDialog.Builder builder = new AlertDialog.Builder (this); \t \t \t builder.setTitle ("Выбрать категории"); \t \t \t builder.setMultiChoiceItems (пункты, checkboxStatusArray, \t \t \t нового DialogInterface.OnMultiChoiceClickListener() { \t \t \t общественный недействительный OnClick (диалог DialogInterface, INT, который, логическое IsChecked) { \t \t \t checkboxStatusArray [ 1] = true; // Эта линия включит второй флажок \t \t \t} \t \t \t}); \t \t \t builder.show(); Я не могу заставить его работать. :( – Arnes

+0

вы добавляете 3 элемента флажка, поэтому добавьте 3 булевых значения в checkboxStatusArray –

+0

, которые теперь отображаются, но не будут выполняться. Checkbox остается отмеченным. – Arnes

2

Я пропустил эту линию

((AlertDialog) dialog).getListView().setItemChecked(which, false); 

после

checkboxStatusArray[1] = false; 
Смежные вопросы