Страница 3 из 5

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 09 май 2013, 13:59
Foenix
в точности как в уроке нужно сделать.

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 02 июн 2013, 21:35
EvilAngel
Захотел объединить обе части примера из урока.
[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 пунктов списка вообще без создания другого адаптера и затрагивания данных списка? И, как можно получить массив элементов списка без мануального перебора и не обращаясь к ранее созданному массиву строк?

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 03 июн 2013, 15:20
KamiSempai
Без создания кастомного адаптера тут не обойтись. Новому адаптеру нужно будет создать метод который будет заменять Id layout-а.
Только после этого стоит вызвать еще раз setAdapter. Иначе список будет продолжать переиспользовать старые вьюхи.

Но я не совсем уверен, что это сработает на всех версиях андроида. Поэтому лучше вначале установить адаптер в null, а потом заново поставить свой.

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 04 июл 2013, 22:18
Snaiper
suicide писал(а):MainActivity не находит R.array.names, т.е. когда я добавляю этот массив в файл хранящий строки, R. файл почему-то не обновляется.
У кого бы такая проблема? Подскажите пожалуйста как решили?

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 05 июл 2013, 04:47
klblk
Snaiper писал(а):
suicide писал(а):MainActivity не находит R.array.names, т.е. когда я добавляю этот массив в файл хранящий строки, R. файл почему-то не обновляется.
У кого бы такая проблема? Подскажите пожалуйста как решили?
Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 05 июл 2013, 11:35
Snaiper
klblk писал(а): Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.
Сделал Project->Clean, R-файл удалился. Как создать R-файл?

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 05 июл 2013, 11:43
klblk
Snaiper писал(а):
klblk писал(а): Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.
Сделал Project->Clean, R-файл удалился. Как создать R-файл?
Он генерируется автоматически. Посмотрите внимательно xml файлы. Либо дайте нам на них посмотреть.

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 05 июл 2013, 12:35
Snaiper
klblk писал(а):
Snaiper писал(а):
klblk писал(а): Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.
Сделал Project->Clean, R-файл удалился. Как создать R-файл?
Он генерируется автоматически. Посмотрите внимательно xml файлы. Либо дайте нам на них посмотреть.
main.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>
strings.xml

Код: Выделить всё

<?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>

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 05 июл 2013, 12:47
Mikhail_dev
import android.R; (вроде так) надо удалить.

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 05 июл 2013, 18:13
Snaiper
klblk писал(а):
Snaiper писал(а):
klblk писал(а): Вероятно Project->Clean поможет. Еще вероятно что в xml файле ошибка.
Сделал Project->Clean, R-файл удалился. Как создать R-файл?
Он генерируется автоматически. Посмотрите внимательно xml файлы. Либо дайте нам на них посмотреть.
Разобрался. Ошибка была в xml файле. Файлы main.xml и strings.xml проверил, а файлу menu.xml внимание не придал. Ошибка как раз в нем и была. В файле была ссылка на строковую переменную которой уже не существовала.

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 29 авг 2013, 10:31
evgenius_b
kaftanati писал(а):
SEEK писал(а): Поясните пожалуйста- в чем проблема то? у меня тоже никак не хочет...даже после clean-а...
Я нашел взаимосвязь - когда вставлял код в string.xml затирал параметр:

Код: Выделить всё

<string name="action_settings">Settings</string>
Когда вернул его на место все срослось :)
И у меня тоже срослось после добавления этой строки в strings.xml! Спасиба!
Но в тексте урока эта строка отсутствует. Интересно, почему так происходит?

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 18 сен 2013, 22:42
aleksbim
А что такое keyAt(i) ?

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 19 сен 2013, 12:57
tav
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

Добавлено: 26 сен 2013, 20:55
Spinner
Ребята, а как сохранять элементы ListView в самом приложении, может с помощью SharedPreferences, но не знаю как..?

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 30 окт 2013, 11:17
gh-gh
в следующем уроке вы пишите
"OnItemSelectedListener – обрабатывает выделение пунктов списка (не check, как на прошлом уроке)"
Все это конечно вводит в заблуждение, но спасибо что пояснили это нюанс.
Но собственно какой листенер отвечает за выделение элемента списка(то есть выделение которое check), чтобы можно было обрабатывать выделение элемента(без нажатия кнопки как у вас в примере)?

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 30 окт 2013, 12:33
trew
gh-gh писал(а):в следующем уроке вы пишите
"OnItemSelectedListener – обрабатывает выделение пунктов списка (не check, как на прошлом уроке)"
Все это конечно вводит в заблуждение, но спасибо что пояснили это нюанс.
Но собственно какой листенер отвечает за выделение элемента списка(то есть выделение которое check), чтобы можно было обрабатывать выделение элемента(без нажатия кнопки как у вас в примере)?
Наверно Вам нужен BaseAdapter.
Урок 54
http://startandroid.ru/ru/uroki/vse-uro ... apter.html
В классе class BoxAdapter
есть обработчик событий OnCheckedChangeListener
Log.d(TAG," --- OnCheckedChangeListener = " + buttonView.getTag().toString());

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 18 янв 2014, 14:16
TittTitov
Здравствуйте!

Разъясните, пожалуйста, что значат (и зачем нужны) эти строки в файле strings.xml:

Код: Выделить всё

<string name="hello">Hello World, MainActivity!</string>
<string name="app_name">SimpleListChoice</string>
Спасибо!

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 18 янв 2014, 14:25
Foenix
это перечень строковых констант и их значений, находится в файле ресурсов. Делается для порядка и удобства. Когда тебе,, например, понадобится локализовать приложение - все в одном месте. Или допустим можно использовать 1 строку в нескольких кусках кода - тоже можно исправить в 1 месте и готово.

Re: Урок 43. Одиночный и множественный выбор в ListView

Добавлено: 22 апр 2014, 17:49
Log1c
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

Добавлено: 23 апр 2014, 06:10
klblk
Это не у автора ошибка, а у вас лишний кусок кода, который создается автоматически при создании проекта (res/menu/main.xml -> android:title="@string/action_settings"). Для данного урока меню вообще не нужно. Иногда(в идеале "всегда") нужно включать голову, а не просто копипастить. Да и к 43 уроку уже должно появиться видение структуры проекта и умение работать со строками.