В AlertDialog я использую метод setMultiChoiceItems для выбора нескольких элементов из базы данных.При использовании метода возникла проблема: когда открывается AlertDialog, у него уже есть галочка на первом элементе.Мне нужно, чтобы все флажки были сняты при открытии диалога.
Я просмотрел много форумов, но не нашел ответа, используя базу данных.
Вот мой фрагмент кода:
// setup the alert builder
AlertDialog.Builder builder = new AlertDialog.Builder(TrainingActivity.this);
builder.setTitle("Choose a climber");
builder.setCancelable(true);
// add a list
String[] projection = {ClimbersEntry._ID, ClimbersEntry.COLUMN_NAME};
final Cursor cursor = getContentResolver().query(
ClimbersEntry.CONTENT_URI,
projection,
null,
null,
null,
null);
builder.setMultiChoiceItems(
cursor,
ClimbersEntry._ID,
ClimbersEntry.COLUMN_NAME,
new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
cursor.moveToPosition(which);
addChoiceToJson(cursor.getInt(0));
} else if (!isChecked){
cursor.moveToPosition(which);
String climberId = String.valueOf(cursor.getInt(0));
// Loop to find the index of an item in climberArrayList
for (int i = 0; i < climberArrayList.size(); i++) {
Climber climber = climberArrayList.get(i);
if (climberId.equals(String.valueOf(climber.getId()))) {
climberArrayList.remove(i);
break;
}
}
trainingJsonObject.remove(climberId);
trainingAdapter.notifyDataSetChanged();
}
}
});
// create and show the alert dialog
AlertDialog dialog = builder.create();
dialog.show();
снимок экрана
Мне показалось, что решение должно быть простым, но, возможно, это не так.
Я прошу прощения за ужасный код,Я все еще учусь)