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

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

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




Начать новую тему Ответить на тему  [ Сообщений: 152 ]  На страницу 1, 2, 3, 4, 5 ... 8  След.
Автор Сообщение
 Заголовок сообщения: Урок 44. События в ListView
СообщениеДобавлено: 22 дек 2011, 03:00 
Администратор
Аватар пользователя

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

- рассматриваем события ListView: нажатие - onItemClick, выделение - onItemSelect, прокрутка - onScroll

Click here to read this article!

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


Последний раз редактировалось damager82 02 май 2017, 23:34, всего редактировалось 6 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 22 мар 2012, 21:20 

Зарегистрирован: 22 мар 2012, 19:28
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Наконец-то открыли регистрацию :)
Делаю по вашему уроку, хочу по нажатию на элементы списка, открывать следующие страницы, естественно, то что написано ниже даже говнокодом не назовешь)
каким способом лучше реализовать это?
я читал, что для отдельной страницы нужно отдельное активити, и т.д. но если можно хотелось бы пример кода, как это сделать для одного элемента списка, а дальше я уж как нибудь сам) на андроиде новичек, как и в java.(



Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. lvMain.setOnItemClickListener(new OnItemClickListener() {
  2.         public void onItemClick(AdapterView<?> parent, View view,
  3.             int position, long id) {
  4.                
  5.                
  6.                 switch ((int)id) {
  7.             case 0:
  8.                
  9.                  setContentView(R.layout.test_layout);
  10.            
  11.               break;
  12.             case 1:
  13.              
  14.              setContentView(R.layout.test_layout2);
  15.               break;
  16.             }
  17.                

p.s.
На Вашем сайте самые исчерпывающие уроки! Спасибо, за то что вы делаете


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 23 мар 2012, 11:34 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
boriakaif писал(а):
...если можно хотелось бы пример кода, как это сделать...

Вся нужная Вам информация находится в уроках 21 - 25.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 23 мар 2012, 14:05 

Зарегистрирован: 22 мар 2012, 19:28
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
а вот именно сам выбор, какую активити стоит запустить - такой подход, (switch-case конструкция в обработчике нажатия на список) это нормально?
можно ли просто по id выбирать?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 23 мар 2012, 16:44 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
Даже и не знаю как ответить. Все зависит от ситуации.
Я правильно понял? Под id подразумевается R.layout.test_layout или R.layout.test_layout2? По id (экрана) можно будет выбрать если есть какая либо связь между строкой списка и этим id . Тут такой связи нет, и единственным нормальным решением будет switch-case.
К чему стоит придраться - это прямое указание позиции выбранного элемента. В Java принято использовать идентификаторы (например, такие как "LOG_TAG" из этого урока).

PS: На самом деле, я сам в Java новичок, поэтому мне на слово верить нельзя :). Может админ чего скажет, у него по больше опыта.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 23 мар 2012, 19:02 

Зарегистрирован: 22 мар 2012, 19:28
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Под id здесь я подразумеваю id тестбокса в listview. то есть я знаю на какую страницу должен вести клик по первому текстбоксу в listview и в case 1: обрабатываю нажатие.
вопрос в том, насколько это правильно?)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 23 мар 2012, 21:21 

Зарегистрирован: 22 мар 2012, 19:28
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. switch ((int)id) {
  2.             case 0:
  3.                 Intent intent = new Intent(this, activitytwo.class);
  4.                 startActivity(intent);
  5.                
  6.            
  7.                
  8.               break;
  9.             case 1:
  10.              
  11.            
  12.               break;
  13.             }
  14.  


такой код для перехода на страницу не работает


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 26 мар 2012, 22:15 

Зарегистрирован: 26 мар 2012, 22:05
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
У Вас this указывает на интерфейс OnItemClickListener, а должен - на текущее Activity


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 27 мар 2012, 22:55 

Зарегистрирован: 26 мар 2012, 22:05
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Например: Intent intent=new Intent(MyActivity.this,activitytwo.class); где MyActivity родительский Activity.
Возможно также незарегистрирован activitytwo в AndroidManifest.xml.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 29 мар 2012, 00:38 
Аватар пользователя

Зарегистрирован: 13 янв 2012, 17:56
Сообщений: 219
Благодарил (а): 3 раз.
Поблагодарили: 6 раз.
Какое событие "слушать", если хочу обновить 1 элемент в ListView при изменении источника данных (адаптер кастомный)
ОТВЕТ
вызывать myAdapter.notifyDataSetChanged()


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 25 май 2012, 14:14 

Зарегистрирован: 25 май 2012, 11:44
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
OnItemSelectedListener нужен для поддержки фокуса (выделение пунктов списка) тракболом или клавиатурой.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 31 май 2012, 08:43 

Зарегистрирован: 31 май 2012, 08:37
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
....(В нашем случае id равен position. Я пока не встречал случаев id != position, но наверняка они есть)

Они могут различаться, когда в качестве поставщика данных используется Cursor.
В этом случае id будет указывать на поле _id из Cursor, а он разумеется не всегда будет совпадать с position.
При работе с базой данных без этого id практически никуда :-)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 31 май 2012, 16:51 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1329
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
smeh писал(а):
....(В нашем случае id равен position. Я пока не встречал случаев id != position, но наверняка они есть)

Они могут различаться, когда в качестве поставщика данных используется Cursor.
В этом случае id будет указывать на поле _id из Cursor, а он разумеется не всегда будет совпадать с position.
При работе с базой данных без этого id практически никуда :-)


Все так. Я когда начал возится с курсорами потом тоже это увидел )

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 04 июн 2012, 11:01 

Зарегистрирован: 31 май 2012, 21:55
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Нужно удалить пункт меню по id.
Приложение выкидывает ошибку.

Код: [ Загрузить ] [ Скрыть ]
Using Text Syntax Highlighting
  1.  List<String> items = new ArrayList<String>();
  2.         ArrayAdapter<String> arrayAdapter;     
  3.  
  4. items.remove(3);
  5.     arrayAdapter.notifyDataSetChanged();


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 04 июн 2012, 11:58 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
romanzi писал(а):
Приложение выкидывает ошибку.
Какую именно ошибку?

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 17 авг 2012, 18:15 

Зарегистрирован: 09 авг 2012, 19:07
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
С этого урока я вообще перестал что-либо понимать.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 27 авг 2012, 11:04 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1329
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
Quqush писал(а):
С этого урока я вообще перестал что-либо понимать.

Возможно мало опыта работы с Java? Попробуйте что-нибудь прочесть из этой темы: viewtopic.php?f=17&t=147

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 05 сен 2012, 09:35 

Зарегистрирован: 30 авг 2012, 20:19
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Подскажите что не так?
На активити есть спинер id=youYearFrom

Код: [ Загрузить ] [ Скрыть ]
  1. Spinner spinner = (Spinner) findViewById(R.id.youYearFrom); 
  2. spinner.setOnItemClickListener(new OnItemClickListener()  
  3.         { 
  4.             public void onItemClick(AdapterView<?> a, View v, int position, long id)  
  5.             { 
  6.                 Toast.makeText(MainActivity.this, "БУМБУМ", Toast.LENGTH_LONG).show(); 
  7.             } 
  8.         }); 

При компиляции выходит ошибка "Source not found."

Опытным путем определил что во всем виновата строка с "spinner.setOnItemClickListener" - если её закомментировать ошибки нет. Однако почему она возникает не пойму


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 05 сен 2012, 10:49 

Зарегистрирован: 16 июл 2012, 07:47
Сообщений: 235
Благодарил (а): 0 раз.
Поблагодарили: 25 раз.
Попробуй сделать clean проекту.
А Строку "БУМБУМ" лучше загнать в ресурсы.
Слушатель можно сделать полем класса:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. private OnItemClickListener spinnerListener = new OnItemClickListener() {
  2.             public void onItemClick(AdapterView<?> a, View v, int position, long id) {
  3.                 Toast.makeText(MainActivity.this, getString(R.string,bumbum), Toast.LENGTH_LONG).show();
  4.             }
  5.         };
  6. ...
  7.         Spinner spinner = (Spinner) findViewById(R.id.youYearFrom);
  8.         spinner.setOnItemClickListener(spinnerListener);
  9.  

или вместо анонимного использовать обычный вложенный.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 44. События в ListView
СообщениеДобавлено: 05 сен 2012, 11:39 

Зарегистрирован: 30 авг 2012, 20:19
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
сделал clean
Слушатель оставил пустым (для минимилизации ошибок)
Код: [ Загрузить ] [ Скрыть ]
  1. OnItemClickListener spinnerListener = new OnItemClickListener() { 
  2.         public void onItemClick(AdapterView<?> a, View v, int position, long id) { 
  3.  
  4.         } 
  5.     }; 

и код оставил таким
Код: [ Загрузить ] [ Скрыть ]
  1. Spinner spinner = (Spinner) findViewById(R.id.youYearFrom); 
  2. spinner.setOnItemClickListener(spinnerListener); 

Та же самая ошибка =(

стоит закомментировать строку
Код: [ Загрузить ] [ Скрыть ]
  1. //spinner.setOnItemClickListener(spinnerListener); 
ошибка пропадает :shock:
как не странно но ситуация такая же и с "OnClickListener" на любом даже вновь созданном Spinnerе


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

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


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

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