Android: есть ли способ удалить строку из общих настроек по ее значению, а не по ключу?

Примерно то, что говорит название.

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

Я хотел использовать editor.remove, но он запрашивает ключ, а не строковое значение, и я не могу понять это... идентификатор будет: "recept" + (fav_popis.getInt("brojanje", 0) + 1), но это не так. работа между строками позже используется для создания списка!

editor.putInt("brojanje", fav_popis.getInt("brojanje", 0) + 1);

editor.putString("recept" + (fav_popis.getInt("brojanje", 0) + 1), s_product);

любая помощь приветствуется.

Благодарю вас!


person Dadi    schedule 21.09.2012    source источник
comment
Если у вас разные значения, у вас должны быть разные ключи. Почему вы не используете значения в качестве префикса или суффикса ваших ключей?   -  person Mustafa Genç    schedule 21.09.2012
comment
хорошо, я попробую это прямо сейчас. я не совсем уверен, что вы имеете в виду: / я пытался использовать свои значения в качестве префикса, и мой список вообще не был заполнен. я переключил прием на s_product моя логика неверна? или я что-то упускаю?   -  person Dadi    schedule 21.09.2012


Ответы (1)


Используйте текст вашего флажка в качестве ключей вашего общего файла настроек.

    SharedPreferences prefs = context.getSharedPreferences(name, mode);
    SharedPreferences.Editor editor = prefs.edit();
    String key = checkbox.getText();

    if(checkbox.isChecked()) {
        editor.putString(key, null);
    } else {
        editor.remove(key);
    }
    editor.commit();

    // if you want to get all the list of checkboxes checked to show in listview
    Set<String> keys = prefs.getAll().keySet();
    for(String key : keys) {
        Log.d(TAG, key);
    }
person knvarma    schedule 21.09.2012