Отменить изменения в listview onbackpressed

#android #listview #onbackpressed

#Android #listview #onbackpressed

Вопрос:

У меня есть представление списка, которое содержит список продуктов, и при нажатии на элемент списка открываются сведения о списке. Элемент списка содержит такие значения, как вес брутто, вес нетто и т.д.

В верхней части страницы сведений об элементе списка у меня есть перекрестная кнопка вместо кнопки «Назад», при нажатии на которую откроется диалоговое окно с надписью «Вы хотите сохранить изменения» и кнопкой «Да» или «нет».

При нажатии «ДА» я могу сохранить изменения в представлении списка, но при нажатии «НЕТ» я не могу отменить изменения.

Ниже приведен код для отображения диалогового окна:

 @Override
    public boolean onBackPressed() {

        final AlertDialog alert = new AlertDialog.Builder(getContext()).create();
        alert.setMessage(getContext().getString(R.string.save_activity));
        alert.setCancelable(false);
        alert.setButton(getContext().getString(R.string.strYes), new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                    saveAndClose();
            }
        });
        alert.setButton2(getContext().getString(R.string.strNo), new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                alert.dismiss();
                ((Activity)getContext()).finish();
            }
        });
        alert.show();
        return true;

    }
  

Для того же я попытался создать список массивов с другой ссылкой и попытался установить значения.

Но, похоже, это не работает.

Пожалуйста, предоставьте любое решение для того же.

Комментарии:

1. Укажите ваше требование

2. Чего вы ожидали? Вы только отклоняете предупреждение и завершаете текущую активность, когда пользователь нажимает «Нет». Кода отмены нет. Конечно, вы не можете отменить изменения.

3. @Джошуа, при нажатии перекрестной кнопки всплывает диалоговое окно, в котором есть ДА или НЕТ. При нажатии YES введенные значения должны сохраняться в списке, а при нажатии NO изменения не должны сохраняться, а предыдущие значения должны отображаться при открытии сведений о списке из списка.

Ответ №1:

Есть простой способ добиться этого

допустим, у вас есть класс продукта

 public class Product{
    private boolean currentState;
    private boolean previosState;
}
  

Сохраняйте текущее состояние, когда пользователь нажимает на крестик, но не трогайте предыдущее состояние.

Теперь при выборе «да» или «нет» при нажатии «Да» учитывается текущее состояние, а при нажатии «Нет» учитывается предыдущее состояние.

Комментарии:

1. спасибо за быстрый ответ, не могли бы вы подробнее рассказать.

2. @StackQuest сделка проста, вы сохраняете состояние текущего состояния и не трогаете предыдущее состояние. Поэтому, когда пользователь нажимает YES, вы учитываете выбор текущего состояния, а когда НЕТ, то previousState ничего не меняет в этой переменной, и вы можете легко получить эффект ОТМЕНЫ.

3. спасибо, но то же самое я задал в вопросе, как восстановить предыдущее состояние моего представления списка.? Поскольку я новичок в Android, я знаю поведение просмотра списка по умолчанию при нажатии назад, но не знаю, как сохранить предыдущее состояние, пожалуйста, помогите

4. Я имею в виду, как реализовать предыдущее состояние, у вас есть какой-нибудь пример.?