Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
#1

MultiSelectListPreference - Android

20.01.2015, 11:04. Просмотров 689. Ответов 9
Метки нет (Все метки)

Доброго времени суток.
Возник вопрос как сделать в настройках MultiSelectListPreference? Толкового мануала так и не нашел. Сейчас приложение работает через ListPreference.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <CheckBoxPreference
    android:key="town"
    android:title="@string/town_title"
    android:summary="@string/town_summary"
    android:defaultValue="true" />
    
    <CheckBoxPreference
    android:key="i_go"
    android:title="@string/i_go_title"
    android:summary="@string/i_go_summary"
    android:defaultValue="true" />
    <ListPreference
       android:title="Поиск мест"
       android:summary="Выберите тип мест"
       android:key="listPref"
       android:defaultValue="digiGreen"
       android:entries="@array/listArray"
       android:entryValues="@array/listValues" />
 
</PreferenceScreen>
По этому коду не совсем разобрался, что означает значение параметра в 20 строке "digiGreen".

Листинг array.xml
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="listArray">
   <item>Кафе</item>
   <item>Ресторан</item>
   <item>АЗС</item>
</string-array>
<string-array name="listValues">
   <item>cafe</item>
   <item>restaurant</item>
   <item>gas_station</item>
 
</string-array>
</resources>
и код собственно
Java
1
2
3
4
5
6
7
SharedPreferences sp;
...
sp = PreferenceManager.getDefaultSharedPreferences(this);
...
String plas = sp.getString("listPref", "nr1");
String types = plas;
...
По этому куску кода не понял, что за параметр "nr1", это же по идее значение по умолчанию должно быть?
String types = "cafe|restaurant"; //получить должны что то наподобие
сейчас же работает, так (получаем какое либо одно значение)
Java
1
2
3
String types = "cafe";
String types = "restaurant";
String types = "gas_station";
Подскажите, куда копать, я только разбираюсь что к чему, поэтому вопросы есть.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2015, 11:04     MultiSelectListPreference
Посмотрите здесь:

MultiSelectListPreference как получить массив выбранных значений? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
20.01.2015, 11:49     MultiSelectListPreference #2
Default value (англ.) - стандартное значение, по умолчанию. Т.е. что будет возвращено, если настройки не были заданы пользователем.
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
20.01.2015, 11:55  [ТС]     MultiSelectListPreference #3
Цитата Сообщение от contedevel Посмотреть сообщение
Default value (англ.) - стандартное значение, по умолчанию. Т.е. что будет возвращено, если настройки не были заданы пользователем.
это то я понял, а почему именно это в значении стоит. я данный пример из интернета взял, и вот не пойму почему "digiGreen"
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
20.01.2015, 12:03     MultiSelectListPreference #4
Цитата Сообщение от Strelok45 Посмотреть сообщение
это то я понял, а почему именно это в значении стоит. я данный пример из интернета взял, и вот не пойму почему "digiGreen"
Это значение присутствует в массиве listValues

Добавлено через 1 минуту
Получить выбранные элементы можно так:
Java
1
sharedPreferences.getStringSet(String key, Set<String> defValues)
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
20.01.2015, 12:13  [ТС]     MultiSelectListPreference #5
Цитата Сообщение от contedevel Посмотреть сообщение
Это значение присутствует в массиве listValues
вообще да, это было бы логично, но в том примере откуда я это брал и в listValues не было данного параметра, я предполагаю, что выбран просто рендомный параметр, чтобы изначально не была выделена ни один пункт.

Цитата Сообщение от contedevel Посмотреть сообщение
Получить выбранные элементы можно так:

Java
1
sharedPreferences.getStringSet(String key, Set<String> defValues)
то есть, в моем примере это будет?
Java
1
String plas = sp.getStringSet("listPref", "cafe");
но на данную запись программа ругается (синтаксис).
И еще было интересно как они в строку поместятся несколько значений, по идее же там надо их разделить символом "|". В коде не проверял, так как ошибку синтаксиса выдавал ранее.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
20.01.2015, 12:20     MultiSelectListPreference #6
Цитата Сообщение от Strelok45 Посмотреть сообщение
вообще да, это было бы логично, но в том примере откуда я это брал и в listValues не было данного параметра, я предполагаю, что выбран просто рендомный параметр, чтобы изначально не была выделена ни один пункт.
Он не обязательно должен там присутствовать, это то, что вернется Вам, когда Вы программно запросите настройки до того, как пользователь их изменить успел.

Цитата Сообщение от Strelok45 Посмотреть сообщение
но на данную запись программа ругается (синтаксис).
И еще было интересно как они в строку поместятся несколько значений, по идее же там надо их разделить символом "|". В коде не проверял, так как ошибку синтаксиса выдавал ранее.
Естественно, у Вас же типы не совпадают. Этот метод возвращает множество строк Set<String>, а не String
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
20.01.2015, 12:34  [ТС]     MultiSelectListPreference #7
Цитата Сообщение от contedevel Посмотреть сообщение
Естественно, у Вас же типы не совпадают. Этот метод возвращает множество строк Set<String>, а не String
Даже так. То есть как я понимаю это массив строк уже какой то будет, в которых и находятся наши значения?
Тогда как я понимаю:
1. необходимо привести как то типы к массиву
2. выбрать из полученного массива данные
3. сложить их в строку и передать в types
Вот только как в коде это сделать надо подумать.
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
20.01.2015, 12:54     MultiSelectListPreference #8
Цитата Сообщение от Strelok45 Посмотреть сообщение
Даже так. То есть как я понимаю это массив строк уже какой то будет, в которых и находятся наши значения?
Тогда как я понимаю:
1. необходимо привести как то типы к массиву
2. выбрать из полученного массива данные
3. сложить их в строку и передать в types
Вот только как в коде это сделать надо подумать.
Set<T> - это одна из коллекций, типа List, HashMap и прочих, работать с ней очень легко.
Посмотрите Java Set
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
23.01.2015, 05:38  [ТС]     MultiSelectListPreference #9
Цитата Сообщение от contedevel Посмотреть сообщение
Set<T> - это одна из коллекций, типа List, HashMap и прочих, работать с ней очень легко.
Посмотрите Java Set
хм, переделал, вылетает при заходе в настройки ListPreference заменил на MultiSelectListPreference. Может там еще что то надо добавить?
contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
23.01.2015, 13:14     MultiSelectListPreference #10
Цитата Сообщение от Strelok45 Посмотреть сообщение
хм, переделал, вылетает при заходе в настройки ListPreference заменил на MultiSelectListPreference. Может там еще что то надо добавить?
Выложите код и разметку, так сложно сказать...
Yandex
Объявления
23.01.2015, 13:14     MultiSelectListPreference
Ответ Создать тему
Опции темы

Текущее время: 11:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru