Удалить элемент массива из ListPreference

У меня есть список предпочтений для режима акселерометра в моем предпочтении, которое я загружаю исключительно из xml. Если пользовательское устройство не имеет или не поддерживает акселерометр, я не буду полностью удалять элемент из массива. Нужно ли мне создавать отдельный список предпочтений для этой опции, чтобы удалить ее? (Я бы предпочел сохранить их все в одном.) Как его можно удалить с помощью приведенной ниже настройки?

Спасибо за совет.

Джейсон

<string-array name="mode_text">
        <item>Others Modes</item>
        <item>Others Modes</item>
        <item>Accelerometer Mode</item>
    </string-array>
    <string-array name="mode_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </string-array>
</resources>

person user652798    schedule 25.04.2011    source источник


Ответы (1)


Когда вы говорите, что хотите «полностью удалить элемент из массива», вы имеете в виду, что не хотите, чтобы ListPreference отображался на PreferenceScreen? Или вы хотите, чтобы он возвращал нулевое значение, когда вы пытаетесь получить заданное значение?

Хорошо, теперь я понимаю. Я думаю, вы не можете удалить только этот элемент в массиве. Вы должны установить новые массивы для записей и entryValues ​​​​для вашего ListPreference программно. Вы найдете ListPreference по его ключу.

Вот пример:

    if (accelerometerNotSupported) {
        ListPreference accelMode = (ListPreference) findPreference("acceleratorMode");
        accelMode.setEntries(new String[]{"Others Modes","Others Modes"});
        accelMode.setEntryValues(new String[]{"0", "1"});
    }

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

person M Granja    schedule 26.04.2011
comment
Нет записи предпочтения отдельного списка в режиме акселерометра. Не все предпочтения, так как другие режимы будут применимы для выбора, поэтому другие по-прежнему должны отображаться в другом режиме и т. д. - person user652798; 26.04.2011
comment
Да, я увидел это только сейчас. Я понял, дай подумать, как ты мог это решить. - person M Granja; 27.04.2011
comment
Наконец нашел ответ после нескольких часов попыток других вещей. Удивительно, как сложно найти эту проблему в Google, учитывая, насколько распространенной она может показаться на первый взгляд. - person pete; 05.08.2020