Использование OnMultiChoiceClickListener с базой данных-курсором - PullRequest
0 голосов
/ 21 января 2019

В 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();

снимок экрана

Мне показалось, что решение должно быть простым, но, возможно, это не так.

Я прошу прощения за ужасный код,Я все еще учусь)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...