У меня проблема в методе onCreateView, у меня есть фрагмент, который имеет кнопку с именем: variableButton , каждый раз, когда я нажимаю на него, он создает AlertDialog , в котором яиспользуйте setMultiChoiceItems для отображения определенных элементов.Я пытаюсь создать Выбрать все в первом указателе, чтобы выбрать все элементы в диалоге или отменить их выбор.
Когда я нажимаю первый раз, это не работает, нопосле второго щелчка по нему он работает (наконец, введя метод onItemClick).Я уже пытался установить Focus для списка, также FOCUS_BLOCK_DESCENDANTS, но он не войдет в первый раз, когда я нажму, как я могу решить это?.
variablesButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
AlertDialog.Builder mBuilder = new AlertDialog.Builder(getContext());
mBuilder.setTitle("Sensors");
mBuilder.setCancelable(false);
mBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
listSensors.clear();
for (int a=0; a<checkedItems.length; a++) {
if (checkedItems[a])
listSensors.add(sensorNames[a]);
}
}
});
mBuilder.setMultiChoiceItems(sensorNames, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
checkedItems[which] = isChecked;
Log.i("checked", String.valueOf(which));
final ListView listView = ((AlertDialog) dialog).getListView();
listView.setFocusable(false);
listView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
boolean isChecked = listView.isItemChecked(pos);
Log.i("pos", String.valueOf(pos));
if (pos == 0) {
for (int i = 1; i < checkedItems.length; i++) { // we start with first element after "Select all" choice
if (isChecked && !listView.isItemChecked(i) || !isChecked && listView.isItemChecked(i)) {
listView.performItemClick(listView, i, 0);
}
}
}
}
});
}
});
mBuilder.create();
mBuilder.show();
}
});