Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 24 окт 2018, 03:38

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: 22 июн 2015, 07:47 

Зарегистрирован: 26 мар 2012, 19:38
Сообщений: 15
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Приветствую! Застрял на одном вопросе. Скажите, вот можно ли как-то сократить запись сравнения содержимого?
Код: [ Загрузить ] [ Скрыть ]
  1. if(String.valueOf("Овен").equals(getResources().getString(R.string.aries))){ 
  2.     Log.d(MainActivity.LOG_TAG, "Получилось"); 
  3. }else { 
  4.     Log.d(MainActivity.LOG_TAG, "Опять шляпа"); 


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 июн 2015, 08:12 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
1) String.valueOf("Овен") => "Овен" => final static String OVEN = "Овен";
2) строку из ресурсов можно тоже получить заранее => String aries = getResources().getString(R.string.aries));
Итого: String.valueOf("Овен").equals(getResources().getString(R.string.aries)) => OVEN.equals(aries)
Хотя непонятно в чем смысл сравнивать одну константу с другой константой.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 июн 2015, 08:43 

Зарегистрирован: 26 мар 2012, 19:38
Сообщений: 15
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
klblk писал(а):
1) String.valueOf("Овен") => "Овен" => final static String OVEN = "Овен";
2) строку из ресурсов можно тоже получить заранее => String aries = getResources().getString(R.string.aries));
Итого: String.valueOf("Овен").equals(getResources().getString(R.string.aries)) => OVEN.equals(aries)
Хотя непонятно в чем смысл сравнивать одну константу с другой константой.

Есть кнопка для выбора зодиаков, при нажатии она вызывает AlertDialog в который я подаю массив строк(ранее полученый из getResources().getStringArray(R.array.all_zodiacs)).
При нажатии на зодиак, она возвращает id позиции, который можно засунуть в массив. Ну и эту позицию сравниваю с Enum через switch.
Возможно есть и более утонченное решение, я буду рад если вы мне подскажете.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 июн 2015, 09:38 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 16:08
Сообщений: 1107
Откуда: Ukraine
Благодарил (а): 31 раз.
Поблагодарили: 175 раз.
id позиции зодиака соответствует позиции элемента в массиве?

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 июн 2015, 10:11 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
Для таких целей и вообще лучше сравнивать айди а не строку
Строку сравнивают когда юзер вводит слово сам, а если выбирает из списка то обязательно по ид

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 июн 2015, 14:25 

Зарегистрирован: 26 мар 2012, 19:38
Сообщений: 15
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
Foenix писал(а):
Для таких целей и вообще лучше сравнивать айди а не строку
Строку сравнивают когда юзер вводит слово сам, а если выбирает из списка то обязательно по ид


Мне нужно создать 2 массива. Один String - для того что-бы передать его в Alertdialog, и Integer массив - для сравнения id?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 22 июн 2015, 14:54 

Зарегистрирован: 26 мар 2012, 19:38
Сообщений: 15
Благодарил (а): 3 раз.
Поблагодарили: 0 раз.
doter.ua писал(а):
id позиции зодиака соответствует позиции элемента в массиве?

Конечно, я же подаю массив в AlertDialog:

Код: [ Загрузить ] [ Скрыть ]
  1. mImageZodiac.setOnClickListener(new View.OnClickListener() { 
  2.             @Override 
  3.             public void onClick(View v) { 
  4.                 mZodiacsNames = getResources().getStringArray(R.array.all_zodiacs); 
  5.                 final int[] mIntZodiacNames = { 
  6.                         R.string.aries, 
  7.                         R.string.leo, 
  8.                         R.string.sagittarius, 
  9.                         R.string.taurus, 
  10.                         R.string.virgo, 
  11.                         R.string.capricorn, 
  12.                         R.string.gemini, 
  13.                         R.string.libra, 
  14.                         R.string.aquarius, 
  15.                         R.string.cancer, 
  16.                         R.string.scorpio, 
  17.                         R.string.pisces, 
  18.                 }; 
  19.  
  20.  
  21.                 AlertDialog.Builder ad = new AlertDialog.Builder(getActivity()); 
  22.                 ad.setTitle("Гороскопы"); 
  23.                 ad.setItems(mZodiacsNames, new DialogInterface.OnClickListener() { 
  24.                     @Override 
  25.                     public void onClick(DialogInterface dialog, int which) { 
  26.                         switch (mIntZodiacNames[which]){ 
  27.                             case R.string.aries: 
  28.                                 mImageZodiac.setImageResource(R.mipmap.aries); 
  29.                                 break; 
  30.                             case R.string.leo: 
  31.                                 mImageZodiac.setImageResource(R.mipmap.leo); 
  32.                                 break; 
  33.                             case R.string.sagittarius: 
  34.                                 mImageZodiac.setImageResource(R.mipmap.sagittarius); 
  35.                                 break; 
  36.                             case R.string.taurus: 
  37.                                 mImageZodiac.setImageResource(R.mipmap.taurus); 
  38.                                 break; 
  39.                             case R.string.virgo: 
  40.                                 mImageZodiac.setImageResource(R.mipmap.virgo); 
  41.                                 break; 
  42.                             case R.string.capricorn: 
  43.                                 mImageZodiac.setImageResource(R.mipmap.capricorn); 
  44.                                 break; 
  45.                             case R.string.gemini: 
  46.                                 mImageZodiac.setImageResource(R.mipmap.gemini); 
  47.                                 break; 
  48.                             case R.string.libra: 
  49.                                 mImageZodiac.setImageResource(R.mipmap.libra); 
  50.                                 break; 
  51.                             case R.string.aquarius: 
  52.                                 mImageZodiac.setImageResource(R.mipmap.aquarius); 
  53.                                 break; 
  54.                             case R.string.cancer: 
  55.                                 mImageZodiac.setImageResource(R.mipmap.cancer); 
  56.                                 break; 
  57.                             case R.string.scorpio: 
  58.                                 mImageZodiac.setImageResource(R.mipmap.scorpio); 
  59.                                 break; 
  60.                             case R.string.pisces: 
  61.                                 mImageZodiac.setImageResource(R.mipmap.pisces); 
  62.                                 break; 
  63.                         } 
  64.                         mTitleZodiac.setText(mZodiacsNames[which]); 
  65.                     } 
  66.                 }); 
  67.                 ad.create().show(); 
  68.             } 
  69.         }); 


вот XML:
Код: [ Загрузить ] [ Скрыть ]
  1. <string name="aries">Овен</string> 
  2.     <string name="leo">Лев</string> 
  3.     <string name="sagittarius">Стрелец</string> 
  4.     <string name="taurus">Телец</string> 
  5.     <string name="virgo">Дева</string> 
  6.     <string name="capricorn">Козерог</string> 
  7.     <string name="gemini">Близнецы</string> 
  8.     <string name="libra">Весы</string> 
  9.     <string name="aquarius">Водолей</string> 
  10.     <string name="cancer">Рак</string> 
  11.     <string name="scorpio">Скорпион</string> 
  12.     <string name="pisces">Рыба</string> 
  13.  
  14.  
  15.     <string-array name="all_zodiacs"> 
  16.         <item>@string/aries</item> 
  17.         <item>@string/leo</item> 
  18.         <item>@string/sagittarius</item> 
  19.         <item>@string/taurus</item> 
  20.         <item>@string/virgo</item> 
  21.         <item>@string/capricorn</item> 
  22.         <item>@string/gemini</item> 
  23.         <item>@string/libra</item> 
  24.         <item>@string/aquarius</item> 
  25.         <item>@string/cancer</item> 
  26.         <item>@string/scorpio</item> 
  27.         <item>@string/pisces</item> 
  28.     </string-array> 


Пока это лучший вариант из всех что перепробовал. 2 массива, один int для сравнения, второй String для AlertDialog


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 23 июн 2015, 01:20 
Аватар пользователя

Зарегистрирован: 20 окт 2012, 12:01
Сообщений: 4201
Благодарил (а): 68 раз.
Поблагодарили: 467 раз.
нет времени вникать, но не забывай, что еще есть двумерные массивы,
или плюс массив имеет значение и индекс. ЗНачение допустим у тебя строка, а по индексу можно что-то с чем-то сравнивать. Используй что тебе удобнее, сравнивая исключительно индексы элементов.

_________________
R.id.team

NullPointerException - что делать???
http://forum.startandroid.ru/viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
http://forum.startandroid.ru/viewtopic.php?f=60&t=3198


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB