Как сохранить состояние RecyclerView флажок при повороте экрана - PullRequest
0 голосов
/ 25 февраля 2019

На скриншоте выделенные элементы не выбираются, я хочу сохранить их состояние.У меня есть все эти формы в recyclerView, которые выбираются по клику.Это код в onListItemClick

 private void onListItemClick(View view, int position) {
        Cursor cursor = instanceAdapter.getCursor();
        cursor.moveToPosition(position);

        CheckBox checkBox = view.findViewById(R.id.checkbox);
        checkBox.setChecked(!checkBox.isChecked());

        long id = cursor.getLong(cursor.getColumnIndex(InstanceProviderAPI.InstanceColumns._ID));

        if (selectedInstances.contains(id)) {
            selectedInstances.remove(id);
        } else {
            selectedInstances.add(id);
        }
        Bundle bundle=new Bundle();
        sendButton.setEnabled(selectedInstances.size() > 0);

        toggleButtonLabel();
    }

, где selectedInstances - это LinkedHashSet

private LinkedHashSet<Long> selectedInstances;

Вот GIF

Here's the GIF

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Если вы не можете сохранить его в базе данных или что-либо, что является «постоянным», то вы можете просто сохранить список / массив логических значений с таким количеством записей, как в вашем ListView.Когда вы установите второй флажок, установите массив [1] = true.

Затем в своем адаптере вы просто проверяете состояние позиции списка для текущего элемента.

В некоторой степенипример

boolean[] checkedState = new boolean[list.count];

private void onListItemClick(View view, int position) {
    //...
    checkedState[position] = //checked state
}

//adapter

public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, int position) {
    //...

    checkBox.isChecked = checkedState[position]
}
0 голосов
/ 25 февраля 2019

ViewModel Хранит данные, связанные с пользовательским интерфейсом, которые не уничтожаются при поворотах приложений.

...