Урок 44. События в ListView
Урок 44. События в ListView
В этом уроке:
- рассматриваем события ListView: нажатие - onItemClick, выделение - onItemSelect, прокрутка - onScroll
Click here to read this article!
- рассматриваем события ListView: нажатие - onItemClick, выделение - onItemSelect, прокрутка - onScroll
Click here to read this article!
Последний раз редактировалось damager82 02 май 2017, 23:34, всего редактировалось 6 раз.
Re: Урок 44. События в ListView
Наконец-то открыли регистрацию
Делаю по вашему уроку, хочу по нажатию на элементы списка, открывать следующие страницы, естественно, то что написано ниже даже говнокодом не назовешь)
каким способом лучше реализовать это?
я читал, что для отдельной страницы нужно отдельное активити, и т.д. но если можно хотелось бы пример кода, как это сделать для одного элемента списка, а дальше я уж как нибудь сам) на андроиде новичек, как и в java.(
p.s.
На Вашем сайте самые исчерпывающие уроки! Спасибо, за то что вы делаете
Делаю по вашему уроку, хочу по нажатию на элементы списка, открывать следующие страницы, естественно, то что написано ниже даже говнокодом не назовешь)
каким способом лучше реализовать это?
я читал, что для отдельной страницы нужно отдельное активити, и т.д. но если можно хотелось бы пример кода, как это сделать для одного элемента списка, а дальше я уж как нибудь сам) на андроиде новичек, как и в java.(
Код: Выделить всё
lvMain.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
switch ((int)id) {
case 0:
setContentView(R.layout.test_layout);
break;
case 1:
setContentView(R.layout.test_layout2);
break;
}
На Вашем сайте самые исчерпывающие уроки! Спасибо, за то что вы делаете
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 44. События в ListView
Вся нужная Вам информация находится в уроках 21 - 25.boriakaif писал(а):...если можно хотелось бы пример кода, как это сделать...
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 44. События в ListView
а вот именно сам выбор, какую активити стоит запустить - такой подход, (switch-case конструкция в обработчике нажатия на список) это нормально?
можно ли просто по id выбирать?
можно ли просто по id выбирать?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 44. События в ListView
Даже и не знаю как ответить. Все зависит от ситуации.
Я правильно понял? Под id подразумевается R.layout.test_layout или R.layout.test_layout2? По id (экрана) можно будет выбрать если есть какая либо связь между строкой списка и этим id . Тут такой связи нет, и единственным нормальным решением будет switch-case.
К чему стоит придраться - это прямое указание позиции выбранного элемента. В Java принято использовать идентификаторы (например, такие как "LOG_TAG" из этого урока).
PS: На самом деле, я сам в Java новичок, поэтому мне на слово верить нельзя . Может админ чего скажет, у него по больше опыта.
Я правильно понял? Под id подразумевается R.layout.test_layout или R.layout.test_layout2? По id (экрана) можно будет выбрать если есть какая либо связь между строкой списка и этим id . Тут такой связи нет, и единственным нормальным решением будет switch-case.
К чему стоит придраться - это прямое указание позиции выбранного элемента. В Java принято использовать идентификаторы (например, такие как "LOG_TAG" из этого урока).
PS: На самом деле, я сам в Java новичок, поэтому мне на слово верить нельзя . Может админ чего скажет, у него по больше опыта.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 44. События в ListView
Под id здесь я подразумеваю id тестбокса в listview. то есть я знаю на какую страницу должен вести клик по первому текстбоксу в listview и в case 1: обрабатываю нажатие.
вопрос в том, насколько это правильно?)
вопрос в том, насколько это правильно?)
Re: Урок 44. События в ListView
Код: Выделить всё
switch ((int)id) {
case 0:
Intent intent = new Intent(this, activitytwo.class);
startActivity(intent);
break;
case 1:
break;
}
Re: Урок 44. События в ListView
У Вас this указывает на интерфейс OnItemClickListener, а должен - на текущее Activity
Re: Урок 44. События в ListView
Например: Intent intent=new Intent(MyActivity.this,activitytwo.class); где MyActivity родительский Activity.
Возможно также незарегистрирован activitytwo в AndroidManifest.xml.
Возможно также незарегистрирован activitytwo в AndroidManifest.xml.
Re: Урок 44. События в ListView
Какое событие "слушать", если хочу обновить 1 элемент в ListView при изменении источника данных (адаптер кастомный)
ОТВЕТ
вызывать myAdapter.notifyDataSetChanged()
ОТВЕТ
вызывать myAdapter.notifyDataSetChanged()
Re: Урок 44. События в ListView
OnItemSelectedListener нужен для поддержки фокуса (выделение пунктов списка) тракболом или клавиатурой.
Re: Урок 44. События в ListView
....(В нашем случае id равен position. Я пока не встречал случаев id != position, но наверняка они есть)
Они могут различаться, когда в качестве поставщика данных используется Cursor.
В этом случае id будет указывать на поле _id из Cursor, а он разумеется не всегда будет совпадать с position.
При работе с базой данных без этого id практически никуда
Они могут различаться, когда в качестве поставщика данных используется Cursor.
В этом случае id будет указывать на поле _id из Cursor, а он разумеется не всегда будет совпадать с position.
При работе с базой данных без этого id практически никуда
Re: Урок 44. События в ListView
Все так. Я когда начал возится с курсорами потом тоже это увидел )smeh писал(а):....(В нашем случае id равен position. Я пока не встречал случаев id != position, но наверняка они есть)
Они могут различаться, когда в качестве поставщика данных используется Cursor.
В этом случае id будет указывать на поле _id из Cursor, а он разумеется не всегда будет совпадать с position.
При работе с базой данных без этого id практически никуда
Re: Урок 44. События в ListView
Нужно удалить пункт меню по id.
Приложение выкидывает ошибку.
Приложение выкидывает ошибку.
Код: Выделить всё
List<String> items = new ArrayList<String>();
ArrayAdapter<String> arrayAdapter;
items.remove(3);
arrayAdapter.notifyDataSetChanged();
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 44. События в ListView
Какую именно ошибку?romanzi писал(а):Приложение выкидывает ошибку.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 44. События в ListView
С этого урока я вообще перестал что-либо понимать.
Re: Урок 44. События в ListView
Возможно мало опыта работы с Java? Попробуйте что-нибудь прочесть из этой темы: viewtopic.php?f=17&t=147Quqush писал(а):С этого урока я вообще перестал что-либо понимать.
Re: Урок 44. События в ListView
Подскажите что не так?
На активити есть спинер id=youYearFrom
При компиляции выходит ошибка "Source not found."
Опытным путем определил что во всем виновата строка с "spinner.setOnItemClickListener" - если её закомментировать ошибки нет. Однако почему она возникает не пойму
На активити есть спинер id=youYearFrom
Код: Выделить всё
Spinner spinner = (Spinner) findViewById(R.id.youYearFrom);
spinner.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> a, View v, int position, long id)
{
Toast.makeText(MainActivity.this, "БУМБУМ", Toast.LENGTH_LONG).show();
}
});
Опытным путем определил что во всем виновата строка с "spinner.setOnItemClickListener" - если её закомментировать ошибки нет. Однако почему она возникает не пойму
Re: Урок 44. События в ListView
Попробуй сделать clean проекту.
А Строку "БУМБУМ" лучше загнать в ресурсы.
Слушатель можно сделать полем класса:
или вместо анонимного использовать обычный вложенный.
А Строку "БУМБУМ" лучше загнать в ресурсы.
Слушатель можно сделать полем класса:
Код: Выделить всё
private OnItemClickListener spinnerListener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
Toast.makeText(MainActivity.this, getString(R.string,bumbum), Toast.LENGTH_LONG).show();
}
};
...
Spinner spinner = (Spinner) findViewById(R.id.youYearFrom);
spinner.setOnItemClickListener(spinnerListener);
Re: Урок 44. События в ListView
сделал clean
Слушатель оставил пустым (для минимилизации ошибок)
и код оставил таким
Та же самая ошибка =(
стоит закомментировать строку ошибка пропадает
как не странно но ситуация такая же и с "OnClickListener" на любом даже вновь созданном Spinnerе
Слушатель оставил пустым (для минимилизации ошибок)
Код: Выделить всё
OnItemClickListener spinnerListener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
}
};
Код: Выделить всё
Spinner spinner = (Spinner) findViewById(R.id.youYearFrom);
spinner.setOnItemClickListener(spinnerListener);
стоит закомментировать строку
Код: Выделить всё
//spinner.setOnItemClickListener(spinnerListener);
как не странно но ситуация такая же и с "OnClickListener" на любом даже вновь созданном Spinnerе