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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 83 ]  На страницу 1, 2, 3, 4, 5  След.
Автор Сообщение
СообщениеДобавлено: 19 дек 2011, 04:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1323
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
В этом уроке:

- используем список ListView для одиночного и множественного выбора элементов

Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 23 июн 2016, 22:18, всего редактировалось 3 раз(а).

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 июл 2012, 15:09 

Зарегистрирован: 28 июн 2012, 17:51
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Здравствуйте.
Заметил такую штуку.
Компилятор постоянни ругался на слова и комментарии на Русском языке.
т.е. создать массив
String[] names = { "Иван", "Марья", "Петр", "Антон", "Даша", "Борис", "Костя", "Игорь", "Анна", "Денис", "Андрей" };
я не мог. при сохранении выдавалась ошибка:
"Save could not be completed. Try File > Save As... if the problem persists.
Reason:
Some characters cannot be mapped using "Cp1252" character encoding.
Either change the encoding or remove the characters which are not supported by the "Cp1252" character encoding."
Причина ясна нужно включить поддержку Русского языка. Подскажите где? )))
Самое интересное, что если хранить всё в файле ресурсов, то никаких ошибок не возникает и всё выводится на ура )


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

Зарегистрирован: 26 июн 2012, 14:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
какую версию андроида используешь? и пробывал ли на разных? я всегда тестирую на 2.3.3 и 4.0.3 то бывают разные ошибки.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 июл 2012, 15:42 

Зарегистрирован: 28 июн 2012, 17:51
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
сейчас использую 2.2
на самом деле, я просто прохожу уроки по порядку, дабы понять как всё тут устроено, поэтому не особо задумывался о версии.
мне почему-то показалось, что эту проблему можно решить парой галочек в настройках Eclipse.
хотя наверное вы правы, и дело в версии.

кстати. еще такой вопрос.
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, names);
  2.  

и
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.names, android.R.layout.simple_list_item_single_choice);
  2.  

Разница в типе данных, который указывается в треугольных скобках, возникает из-за того, что один адаптер создается на основе нашего массива типа String,
а второй из файла ресурсов?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 июл 2012, 10:29 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1323
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
Alexei писал(а):
Разница в типе данных, который указывается в треугольных скобках, возникает из-за того, что один адаптер создается на основе нашего массива типа String, а второй из файла ресурсов?

Метод ArrayAdapter.createFromResource на выходе дает ArrayAdapter<CharSequence>. Поэтому приходится так объявлять переменную.

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

Хотя можно делать и так:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ArrayAdapter<CharSequence> adapter = new ArrayAdapter<CharSequence>(this, android.R.layout.simple_list_item_1, names);

А в массив names можно сложить String, т.к. String наследует интерфейс CharSequence и адаптер запросто будет с ним работать.

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


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

Зарегистрирован: 20 июл 2012, 12:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Привет.
Такая штука: урок 42, код
Код: [ Загрузить ] [ Скрыть ]
Using Text Syntax Highlighting
  1. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, names);


а урок 43, код
Код: [ Загрузить ] [ Скрыть ]
Using Text Syntax Highlighting
  1. ArrayAdapter<CharSequence> adapter=ArrayAdapter.createFromResource(this, R.array.names, android.R.layout.simple_list_item_single_choice);


Вопрос - почему в одном случае создается НОВЫЙ объект класса адаптер, а в другом - просто приравнивается...? Для меня это вообще загадка, когда надо какой способ выбирать...Я больше на VB и VBA привык писать под эксель, там там запросто без всех этих NEW можно обойтись, а тут...попа полная )))

Еще вопрос - в этой же строке урока 43 - во второй половине не указывается тип <String> - почему? А в 42-м уроке - указан...


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

Зарегистрирован: 17 фев 2012, 22:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
В первом случае мы сами создаем адаптер, а во втором за нас это делает статичный метод createFromResource. Внутри него все тот-же new ArrayAdapter

Если заглянуть в документацию, то там сказано, что этот метод возвращает ArrayAdapter<CharSequence>, поэтому в уроке 43 так и написано.
В данной ситуации разницы между CharSequence и String почти ни какой.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


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

Зарегистрирован: 20 июл 2012, 12:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
KamiSempai писал(а):
В первом случае мы сами создаем адаптер, а во втором за нас это делает статичный метод createFromResource. Внутри него все тот-же new ArrayAdapter

Если заглянуть в документацию, то там сказано, что этот метод возвращает ArrayAdapter<CharSequence>, поэтому в уроке 43 так и написано.
В данной ситуации разницы между CharSequence и String почти ни какой.


А как узнать, когда какой способ использовать?


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

Зарегистрирован: 17 фев 2012, 22:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
powercat писал(а):
А как узнать, когда какой способ использовать?
Зависит от ситуации. В уроке 43 массив хранится в ресурсах и если делать без этого метода, получится вот так:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. CharSequence[] names = getResources().getTextArray(R.array.names);
  2. ArrayAdapter<CharSequence> adapter=new ArrayAdapter<CharSequence>(this, android.R.layout.simple_list_item_1, names);
Зачем писать больше, если не видно разницы?

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


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

Зарегистрирован: 20 июл 2012, 12:31
Сообщений: 506
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
KamiSempai писал(а):
powercat писал(а):
А как узнать, когда какой способ использовать?
Зависит от ситуации. В уроке 43 массив хранится в ресурсах и если делать без этого метода, получится вот так:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. CharSequence[] names = getResources().getTextArray(R.array.names);
  2. ArrayAdapter<CharSequence> adapter=new ArrayAdapter<CharSequence>(this, android.R.layout.simple_list_item_1, names);
Зачем писать больше, если не видно разницы?


А разве нельзя вот так написать, в явном виде указать names?
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ArrayAdapter<CharSequence> adapter=new ArrayAdapter<CharSequence>(this, android.R.layout.simple_list_item_1, getResources().getTextArray(R.array.names));


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

Зарегистрирован: 17 фев 2012, 22:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
В две строчки я для наглядности написал.
Так тоже можно. Но все-равно на 16 символов больше :)

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 12 авг 2012, 17:13 

Зарегистрирован: 04 авг 2012, 15:48
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
MainActivity не находит R.array.names, т.е. когда я добавляю этот массив в файл хранящий строки, R. файл почему-то не обновляется.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 сен 2012, 22:18 

Зарегистрирован: 22 июн 2012, 07:09
Сообщений: 14
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Помогите с множественным выбором

Создаю Диалог таким способом
здесь же прописываю
lv_del_transl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
чтобы ListView было присвоено свойство множественного выбора

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.                 final AlertDialog al_del_tr
  2.                         AlertDialog.Builder  Al_tr = new AlertDialog.Builder(this);
  3.                         Al_tr.setTitle("Title");
  4.                        
  5.                         RelativeLayout view_T = (RelativeLayout)getLayoutInflater().inflate(R.layout.listofword_cmenu_del_transl, null);
  6.                         Al_tr.setView(view_T);
  7.                        
  8.                        
  9.                         TextView del_transl = (TextView)view_T.findViewById(R.id.del_transl);
  10.                         ListView lv_del_transl = (ListView)view_T.findViewById(R.id.lv_del_transl);
  11.                     Button del_transl_OK = (Button)view_T.findViewById(R.id.del_transl_OK);
  12.                     Button del_transl_Cancel = (Button)view_T.findViewById(R.id.del_transl_Cancel);
  13.                    
  14.                        
  15.                         al_del_tr=Al_tr.create();              
  16.                    
  17.                     Del_transl.setText("word");
  18.                    
  19.                
  20.                                 Cursor c_adap_tr=cur_del_tr(......);
  21.                                 startManagingCursor(c_adap_tr);
  22.                                
  23.                                 String[] from_r = new String[]{NAME};
  24.                                 int[] to_r = new int[] {R.id.transl };
  25.                                 scAdapter_transl = new SimpleCursorAdapter(this, R.layout.listofword_cmenu_del_transl_item, c_adap_tr, from_r, to_r);
  26.                                lv_del_transl.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
  27.                                 lv_del_transl.setAdapter(scAdapter_transl);
  28.  
  29.          del_transl_OK.setOnClickListener(new View.OnClickListener() {
  30.                                        
  31.                                         public void onClick(View v) {
  32.                                                 String sel="0";
  33.  
  34.                                                 SparseBooleanArray sbArray = lv_del_transl.getCheckedItemPositions();
  35.                                             for (int i = 0; i < lv_del_transl.getCount(); i++) {
  36.                                               int key = sbArray.keyAt(i);
  37.                                               if (sbArray.get(i))
  38.                                                 sel+=Integer.toString(lv_del_transl.getCheckedItemPosition())+" ";
  39.                                             }
  40.                                             Toast.makeText(getApplicationContext(), Integer.toString(lv_del_transl.getCount())+" "+sel, Toast.LENGTH_SHORT).show();
  41.                                                
  42.                                
  43.                                         }
  44.                                 });
  45. ....      
  46.  
  47.      al_del_rt.show();
  48.  
  49.  
  50.  

Xml файл
в ListViev дописываю свойство
android:choiceMode="multipleChoice"
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2.     <RelativeLayout
  3.         xmlns:android="http://schemas.android.com/apk/res/android"
  4.         android:layout_width="290dp"
  5.         android:layout_height="wrap_content"
  6.         android:orientation="vertical"
  7.          >
  8.  
  9.  
  10.  
  11.  
  12.         <LinearLayout
  13.             android:id="@+id/lv_del_translation"
  14.             android:layout_width="match_parent"
  15.             android:layout_height="wrap_content"
  16.             android:orientation="vertical"
  17.             android:padding="5dp" >
  18.  
  19.             <TextView
  20.                 android:id="@+id/del_translation"
  21.                 android:layout_width="wrap_content"
  22.                 android:layout_height="wrap_content"
  23.                 android:layout_gravity="center_horizontal"
  24.                 android:text="@string/text_del_translation"
  25.                 android:textSize="20dp" />
  26.  
  27.             <TextView
  28.                 android:id="@+id/del_transl"
  29.                 android:layout_width="wrap_content"
  30.                 android:layout_height="wrap_content"
  31.                 android:layout_gravity="center_horizontal"
  32.                 android:layout_marginTop="28dp"
  33.                 android:text="@string/text_del_transl"
  34.                 android:textSize="20dp" />
  35.  
  36.         </LinearLayout>
  37.            
  38.  
  39.               <ListView
  40.                 android:id="@+id/lv_del_transl"
  41.                 android:layout_below="@+id/lv_del_translation"
  42.                 android:layout_width="match_parent"
  43.                 android:layout_height="wrap_content"
  44.                 android:layout_marginTop="10dp"
  45.                 android:layout_weight="1"
  46.                android:choiceMode="multipleChoice"
  47.                 />
  48.  
  49.        
  50.    
  51.  
  52.  
  53.         <LinearLayout
  54.             android:id="@+id/l_del_buttons"
  55.             android:layout_width="match_parent"
  56.             android:layout_height="wrap_content"
  57.             android:layout_alignParentBottom="true"
  58.             android:layout_gravity="center"
  59.             android:background="@drawable/gradient_box"
  60.             android:orientation="horizontal"
  61.             android:padding="5dp"
  62.             >
  63.            
  64.             <Button
  65.                 android:id="@+id/del_transl_OK"
  66.                 android:layout_width="match_parent"
  67.                 android:layout_height="wrap_content"
  68.                 android:layout_weight="1"
  69.                 android:text="@string/text_del_word_OK"
  70.                  />
  71.  
  72.             <Button
  73.                 android:id="@+id/del_transl_Cancel"
  74.                 android:layout_width="match_parent"
  75.                 android:layout_height="wrap_content"
  76.                 android:layout_weight="1"
  77.                 android:text="@string/text_del_word_Cancel"
  78.                 />
  79.            
  80.            
  81.            
  82.         </LinearLayout>
  83.    
  84.        
  85.        
  86.  
  87.  </RelativeLayout>
  88.  


где R.layout.listofword_cmenu_del_transl_item

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout
  3.  xmlns:android="http://schemas.android.com/apk/res/android"
  4.  android:layout_width="match_parent"
  5.  android:layout_height="wrap_content"
  6.  android:orientation="horizontal">
  7.  
  8. <TextView
  9.  android:id="@+id/transl"
  10.  android:layout_width="wrap_content"
  11.  android:layout_height="wrap_content"
  12.  android:layout_marginLeft="20dp"
  13.  android:layout_centerVertical="true"
  14.  android:textSize="19sp">
  15. </TextView>
  16.  
  17. <CheckBox
  18.     android:id="@+id/checbox_id"
  19.     android:layout_marginRight="10dp"
  20.     android:layout_alignParentRight="true"
  21.     android:layout_width="wrap_content"
  22.     android:layout_height="wrap_content"
  23.     />
  24.  
  25.  
  26.  
  27.  </RelativeLayout>
  28.  
  29.  
  30.  


Ощущение, что SparseBooleanArray sbArray никакого эффекта не дает.
Т.е. при выборе нескольких CheckBox и нажатии Button получается, что игнорируется выбор CheckBox
Подскажите в чем ошибка?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 01 окт 2012, 12:46 

Зарегистрирован: 14 авг 2012, 20:52
Сообщений: 9
Откуда: Мордовия
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Почему неправильно определяются индексы выделенных элементов.В LogСat получаю следующее
checked:
-1
-1
-1

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public void onClick(View arg0) {
  2.         // пишем в лог выделенные элементы
  3.         Log.d(LOG_TAG, "checked: ");
  4.         SparseBooleanArray sbArray = lvMain.getCheckedItemPositions();
  5.         for (int i = 0; i < sbArray.size(); i++) {
  6.           int key = sbArray.keyAt(i);
  7.           if (sbArray.get(key))
  8.             Log.d(LOG_TAG, String.valueOf(lvMain.getCheckedItemPosition()));
  9.         }
  10.       }

в адаптере использовал ArrayList
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ArrayList<String> con=new ArrayList<String>();
  2.         ArrayAdapter<String> adapter = new ArrayAdapter<String>(
  3.             this,
  4.             android.R.layout.simple_list_item_multiple_choice,con);


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 02 окт 2012, 11:28 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 12:32
Сообщений: 1323
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
Dimatrof писал(а):
Почему неправильно определяются индексы выделенных элементов.

У вас множественный выбор?
Метод getCheckedItemPosition используется для получения индекса при одиночном выборе.
В уроке немного другой код, чем ваш:
вместо
lvMain.getCheckedItemPosition()
используется
names[key]

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 04 окт 2012, 16:13 

Зарегистрирован: 14 авг 2012, 20:52
Сообщений: 9
Откуда: Мордовия
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
damager82 писал(а):
Dimatrof писал(а):
Почему неправильно определяются индексы выделенных элементов.

У вас множественный выбор?
Метод getCheckedItemPosition используется для получения индекса при одиночном выборе.
В уроке немного другой код, чем ваш:
вместо
lvMain.getCheckedItemPosition()
используется
names[key]

ок.спасибо, с этим разобрался.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 окт 2012, 16:29 

Зарегистрирован: 14 сен 2012, 14:39
Сообщений: 30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
MainActivity не находит R.array.names , почему то подчёркивает array крассной линией и пишет "array cannot be resolved or is not a field"

в чём тут проблема?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 окт 2012, 16:41 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 14:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
1) ошибка в синтаксисе; - проверьте array файл
2) Eclipse не обновил R.java; - сделайте clean проекту
3) импортирован не тот R.java файл

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 окт 2012, 16:43 

Зарегистрирован: 14 сен 2012, 14:39
Сообщений: 30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
как сделать clean проекту? спасибо


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 окт 2012, 16:53 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 14:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Project - Clean

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 83 ]  На страницу 1, 2, 3, 4, 5  След.

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


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

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