Урок 43. Одиночный и множественный выбор в ListView
Re: Урок 43. Одиночный и множественный выбор в ListView
в точности как в уроке нужно сделать.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 43. Одиночный и множественный выбор в ListView
Захотел объединить обе части примера из урока.
[syntax=java]
...
public boolean onContextItemSelected(MenuItem item) {
ListView lv = (ListView)findViewById(R.id.lvMain);
int LayoutTemplate = 0, ItemId = item.getItemId();
if (ItemId == MY_MENU_SINGLE_CHOICE) {
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
LayoutTemplate = android.R.layout.simple_list_item_single_choice;
}
else if (ItemId == MY_MENU_MULTIPLE_CHOICE) {
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
LayoutTemplate = android.R.layout.simple_list_item_multiple_choice;
}
lv.setAdapter(new ArrayAdapter<String>(this, LayoutTemplate,getResources().getStringArray(R.array.names)));
return super.onContextItemSelected(item);
}
...
[/syntax]
Но вот в строке
[syntax=java]lv.setAdapter(new ArrayAdapter<String>(this, LayoutTemplate,getResources().getStringArray(R.array.names)));[/syntax]
мне не нравится getResources().getStringArray(R.array.names). Можно ли изменить layout пунктов списка вообще без создания другого адаптера и затрагивания данных списка? И, как можно получить массив элементов списка без мануального перебора и не обращаясь к ранее созданному массиву строк?
[syntax=java]
...
public boolean onContextItemSelected(MenuItem item) {
ListView lv = (ListView)findViewById(R.id.lvMain);
int LayoutTemplate = 0, ItemId = item.getItemId();
if (ItemId == MY_MENU_SINGLE_CHOICE) {
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
LayoutTemplate = android.R.layout.simple_list_item_single_choice;
}
else if (ItemId == MY_MENU_MULTIPLE_CHOICE) {
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
LayoutTemplate = android.R.layout.simple_list_item_multiple_choice;
}
lv.setAdapter(new ArrayAdapter<String>(this, LayoutTemplate,getResources().getStringArray(R.array.names)));
return super.onContextItemSelected(item);
}
...
[/syntax]
Но вот в строке
[syntax=java]lv.setAdapter(new ArrayAdapter<String>(this, LayoutTemplate,getResources().getStringArray(R.array.names)));[/syntax]
мне не нравится getResources().getStringArray(R.array.names). Можно ли изменить layout пунктов списка вообще без создания другого адаптера и затрагивания данных списка? И, как можно получить массив элементов списка без мануального перебора и не обращаясь к ранее созданному массиву строк?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 43. Одиночный и множественный выбор в ListView
Без создания кастомного адаптера тут не обойтись. Новому адаптеру нужно будет создать метод который будет заменять Id layout-а.
Только после этого стоит вызвать еще раз setAdapter. Иначе список будет продолжать переиспользовать старые вьюхи.
Но я не совсем уверен, что это сработает на всех версиях андроида. Поэтому лучше вначале установить адаптер в null, а потом заново поставить свой.
Только после этого стоит вызвать еще раз setAdapter. Иначе список будет продолжать переиспользовать старые вьюхи.
Но я не совсем уверен, что это сработает на всех версиях андроида. Поэтому лучше вначале установить адаптер в null, а потом заново поставить свой.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 43. Одиночный и множественный выбор в ListView
У кого бы такая проблема? Подскажите пожалуйста как решили?suicide писал(а):MainActivity не находит R.array.names, т.е. когда я добавляю этот массив в файл хранящий строки, R. файл почему-то не обновляется.
Re: Урок 43. Одиночный и множественный выбор в ListView
Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.Snaiper писал(а):У кого бы такая проблема? Подскажите пожалуйста как решили?suicide писал(а):MainActivity не находит R.array.names, т.е. когда я добавляю этот массив в файл хранящий строки, R. файл почему-то не обновляется.
Re: Урок 43. Одиночный и множественный выбор в ListView
Сделал Project->Clean, R-файл удалился. Как создать R-файл?klblk писал(а): Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.
Re: Урок 43. Одиночный и множественный выбор в ListView
Он генерируется автоматически. Посмотрите внимательно xml файлы. Либо дайте нам на них посмотреть.Snaiper писал(а):Сделал Project->Clean, R-файл удалился. Как создать R-файл?klblk писал(а): Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.
Re: Урок 43. Одиночный и множественный выбор в ListView
main.xmlklblk писал(а):Он генерируется автоматически. Посмотрите внимательно xml файлы. Либо дайте нам на них посмотреть.Snaiper писал(а):Сделал Project->Clean, R-файл удалился. Как создать R-файл?klblk писал(а): Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:id="@+id/btnChecked"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Get checked items">
</Button>
<ListView
android:id="@+id/lvMain"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ListView>
</LinearLayout>
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">SimpleListChoice</string>
<string-array name="names">
<item>Иван</item>
<item>Марья</item>
<item>Петр</item>
<item>Антон</item>
<item>Даша</item>
<item>Борис</item>
<item>Костя</item>
<item>Игорь</item>
<item>Анна</item>
<item>Денис</item>
<item>Вадим</item>
<item>Ольга</item>
<item>Сергей</item>
</string-array>
</resources>
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 43. Одиночный и множественный выбор в ListView
import android.R; (вроде так) надо удалить.
Re: Урок 43. Одиночный и множественный выбор в ListView
Разобрался. Ошибка была в xml файле. Файлы main.xml и strings.xml проверил, а файлу menu.xml внимание не придал. Ошибка как раз в нем и была. В файле была ссылка на строковую переменную которой уже не существовала.klblk писал(а):Он генерируется автоматически. Посмотрите внимательно xml файлы. Либо дайте нам на них посмотреть.Snaiper писал(а):Сделал Project->Clean, R-файл удалился. Как создать R-файл?klblk писал(а): Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.
-
- Сообщения: 10
- Зарегистрирован: 23 авг 2013, 13:26
Re: Урок 43. Одиночный и множественный выбор в ListView
И у меня тоже срослось после добавления этой строки в strings.xml! Спасиба!kaftanati писал(а):Я нашел взаимосвязь - когда вставлял код в string.xml затирал параметр:SEEK писал(а): Поясните пожалуйста- в чем проблема то? у меня тоже никак не хочет...даже после clean-а...Когда вернул его на место все срослосьКод: Выделить всё
<string name="action_settings">Settings</string>
Но в тексте урока эта строка отсутствует. Интересно, почему так происходит?
Re: Урок 43. Одиночный и множественный выбор в ListView
А что такое keyAt(i) ?
Re: Урок 43. Одиночный и множественный выбор в ListView
public int keyAt (int index)
Added in API level 1
Given an index in the range 0...size()-1, returns the key from the indexth key-value mapping that this SparseBooleanArray stores.
Re: Урок 43. Одиночный и множественный выбор в ListView
Ребята, а как сохранять элементы ListView в самом приложении, может с помощью SharedPreferences, но не знаю как..?
Re: Урок 43. Одиночный и множественный выбор в ListView
в следующем уроке вы пишите
"OnItemSelectedListener – обрабатывает выделение пунктов списка (не check, как на прошлом уроке)"
Все это конечно вводит в заблуждение, но спасибо что пояснили это нюанс.
Но собственно какой листенер отвечает за выделение элемента списка(то есть выделение которое check), чтобы можно было обрабатывать выделение элемента(без нажатия кнопки как у вас в примере)?
"OnItemSelectedListener – обрабатывает выделение пунктов списка (не check, как на прошлом уроке)"
Все это конечно вводит в заблуждение, но спасибо что пояснили это нюанс.
Но собственно какой листенер отвечает за выделение элемента списка(то есть выделение которое check), чтобы можно было обрабатывать выделение элемента(без нажатия кнопки как у вас в примере)?
Re: Урок 43. Одиночный и множественный выбор в ListView
Наверно Вам нужен BaseAdapter.gh-gh писал(а):в следующем уроке вы пишите
"OnItemSelectedListener – обрабатывает выделение пунктов списка (не check, как на прошлом уроке)"
Все это конечно вводит в заблуждение, но спасибо что пояснили это нюанс.
Но собственно какой листенер отвечает за выделение элемента списка(то есть выделение которое check), чтобы можно было обрабатывать выделение элемента(без нажатия кнопки как у вас в примере)?
Урок 54
http://startandroid.ru/ru/uroki/vse-uro ... apter.html
В классе class BoxAdapter
есть обработчик событий OnCheckedChangeListener
Log.d(TAG," --- OnCheckedChangeListener = " + buttonView.getTag().toString());
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: Урок 43. Одиночный и множественный выбор в ListView
Здравствуйте!
Разъясните, пожалуйста, что значат (и зачем нужны) эти строки в файле strings.xml:
Спасибо!
Разъясните, пожалуйста, что значат (и зачем нужны) эти строки в файле strings.xml:
Код: Выделить всё
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">SimpleListChoice</string>
Re: Урок 43. Одиночный и множественный выбор в ListView
это перечень строковых констант и их значений, находится в файле ресурсов. Делается для порядка и удобства. Когда тебе,, например, понадобится локализовать приложение - все в одном месте. Или допустим можно использовать 1 строку в нескольких кусках кода - тоже можно исправить в 1 месте и готово.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 43. Одиночный и множественный выбор в ListView
Похоже автор урока ошибся.Fima777 писал(а):MainActivity не находит R.array.names , почему то подчёркивает array красной линией и пишет "array cannot be resolved or is not a field"
в чём тут проблема?
Я добавил в файл res/values/strings.xml
Еще такую строку в <resources>:
<string name="action_settings">Settings</string>
Т. е. файл res/values/strings.xml у меня получился такой:
[syntax=xml]<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">SimpleListChoice</string>
<string name="action_settings">Settings</string>
<string-array name="names">
<item>Иван</item>
<item>Марья</item>
<item>Петр</item>
<item>Антон</item>
<item>Даша</item>
<item>Борис</item>
<item>Костя</item>
<item>Игорь</item>
<item>Анна</item>
<item>Денис</item>
<item>Вадим</item>
<item>Ольга</item>
<item>Сергей</item>
</string-array>
</resources>[/syntax]
По крайней мере у меня заработало.
Re: Урок 43. Одиночный и множественный выбор в ListView
Это не у автора ошибка, а у вас лишний кусок кода, который создается автоматически при создании проекта (res/menu/main.xml -> android:title="@string/action_settings"). Для данного урока меню вообще не нужно. Иногда(в идеале "всегда") нужно включать голову, а не просто копипастить. Да и к 43 уроку уже должно появиться видение структуры проекта и умение работать со строками.