Урок 45. Список-дерево ExpandableListView

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 45. Список-дерево ExpandableListView

Сообщение damager82 » 26 дек 2011, 03:00

В этом уроке:

- строим список-дерево ExpandableListView

Click here to read this article!
Последний раз редактировалось damager82 02 май 2017, 23:34, всего редактировалось 5 раз.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Slavko
Сообщения: 6
Зарегистрирован: 12 янв 2012, 02:46

Re: Урок 45. Список-дерево ExpandableListView

Сообщение Slavko » 25 янв 2012, 17:12

привет всем!
попробовал поэкспериментировать с настройками
adapter, в частности с android.R.id.text1 (подставил android.R.id.text2, собственные настройки),
получил один результат - пропал вывод на экран массива фирм (самсунг и т.д.).
Подскажите, в чем проблема.

в инете нашел описание android.R.id.text1, подставил, тот же результат, не работает.

<TextView
android:id="@android:id/text1"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:paddingLeft="5dip"
android:singleLine="true"
/>

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 45. Список-дерево ExpandableListView

Сообщение damager82 » 26 янв 2012, 14:35

Slavko писал(а):попробовал поэкспериментировать с настройками adapter, в частности с android.R.id.text1 (подставил android.R.id.text2, собственные настройки),
получил один результат - пропал вывод на экран массива фирм (самсунг и т.д.).
Походу вы указываете адаптеру поля, которых нет в layout.

Укажите здесь вашу строку создания адаптера, плз. Чтобы было видно, какие layout используются. И содержимое массивов groupTo и childTo.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Slavko
Сообщения: 6
Зарегистрирован: 12 янв 2012, 02:46

Re: Урок 45. Список-дерево ExpandableListView

Сообщение Slavko » 26 янв 2012, 18:19

В тексте ничего не менял.
Я хотел по экспериментировать с шаблонами гугла.
в строке
int groupTo[] = new int[] {android.R.id.text1};
Заменил один шаблон на другой.
int groupTo[] = new int[] {android.R.id.text2};
Подставил в файл компановки main.xml свои настройки.
Результат один, пропадают названия фирм.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 45. Список-дерево ExpandableListView

Сообщение damager82 » 28 янв 2012, 16:38

Slavko писал(а):В тексте ничего не менял.
Я хотел по экспериментировать с шаблонами гугла.
в строке
int groupTo[] = new int[] {android.R.id.text1};
Заменил один шаблон на другой.
int groupTo[] = new int[] {android.R.id.text2};
Подставил в файл компановки main.xml свои настройки.
Результат один, пропадают названия фирм.
В main.xml только компонент списка.
За отображение данных отвечают:
android.R.layout.simple_expandable_list_item_1 - группы
android.R.layout.simple_list_item_1 - элементы

В них должны быть те View-компоненты, которые вы соответственно указываете в массивах groupTo и childTo.
Элемент с id = android.R.id.text2 есть в layout отвечающем за группы?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Dull
Сообщения: 6
Зарегистрирован: 12 янв 2012, 20:31

Re: Урок 45. Список-дерево ExpandableListView

Сообщение Dull » 01 фев 2012, 09:41

45 и 46 урок, вопрос - как при открытии списка закрыть предыдущий открытый список. - требуется только 1 открытый список.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 45. Список-дерево ExpandableListView

Сообщение damager82 » 01 фев 2012, 17:45

Dull писал(а):45 и 46 урок, вопрос - как при открытии списка закрыть предыдущий открытый список. - требуется только 1 открытый список.
Можно хранить где-нить позицию последней открытой группы и закрывать ее программно при открытии новой.

Пример реализации:
Создать переменную в классе Activity

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

int currGroup = 0;
И в метод onGroupExpand обработчика разворачивания добавить код:

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

if (currGroup != groupPosition) {
	elvMain.collapseGroup(currGroup);
	currGroup = groupPosition;
}
Особо не тестил, но вроде работает без сбоев.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
Xroft
Сообщения: 38
Зарегистрирован: 10 май 2012, 10:11

Re: Урок 45. Список-дерево ExpandableListView

Сообщение Xroft » 11 июн 2012, 00:06

damager82 писал(а):
Slavko писал(а):попробовал поэкспериментировать с настройками adapter, в частности с android.R.id.text1 (подставил android.R.id.text2, собственные настройки),
получил один результат - пропал вывод на экран массива фирм (самсунг и т.д.).
Походу вы указываете адаптеру поля, которых нет в layout.

Укажите здесь вашу строку создания адаптера, плз. Чтобы было видно, какие layout используются. И содержимое массивов groupTo и childTo.
у меня сначала та же фигня была:) дело в том, что после того как вы применили свой слой тут:
android.R.layout.simple_expandable_list_item_1

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

    SimpleCursorTreeAdapter sctAdapter = new MyAdapter(this, cursor,
        android.R.layout.simple_expandable_list_item_1, groupFrom,
        groupTo, android.R.layout.simple_list_item_1, childFrom,
        childTo);
    elvMain = (ExpandableListView) findViewById(R.id.elvMain);
    elvMain.setAdapter(sctAdapter);
  }
вы забыли поменять его и здесь

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

String[] groupFrom = { mDbHelper.spr_grp_go_name };
        int[] groupTo = { android.R.id.text1 };
в итоге заполняется не R.id.text1 а по прежнему android.R.id.text1

кстати, как отредактировать android.R.layout.simple_list_item_1? эклипс матерится когда я его открываю.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 45. Список-дерево ExpandableListView

Сообщение damager82 » 13 июн 2012, 10:24

Xroft писал(а):кстати, как отредактировать android.R.layout.simple_list_item_1? эклипс матерится когда я его открываю.
Я думаю, никак. Только копию свою создать.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Re: Урок 45. Список-дерево ExpandableListView

Сообщение andev » 08 авг 2012, 10:09

Появилась необходимость использовать этот тип ListView, но в родительском списке должны присутствовать как разворачивающиеся группы, так и элементы, не имеющие дочерних.
Скажите, это можно реализовать при помощи ExpandableListView и если нет, то при помощи чего?

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

--start--
Item1
Item2
Item3
    subitem1
    subitem2
    subitem3
Item4
Item5
    subitem1
    subitem2
    subitem3
--end--

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 45. Список-дерево ExpandableListView

Сообщение math64 » 08 авг 2012, 12:51

damager82 писал(а):
Xroft писал(а):кстати, как отредактировать android.R.layout.simple_list_item_1? эклипс матерится когда я его открываю.
Я думаю, никак. Только копию свою создать.
оригинал можно взять из <путь установки android>/platrorms/android-<номер версии>/data/res/layout/simple_list_item_1.xml

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 45. Список-дерево ExpandableListView

Сообщение rezak90 » 09 авг 2012, 10:35

andev писал(а):Появилась необходимость использовать этот тип ListView, но в родительском списке должны присутствовать как разворачивающиеся группы, так и элементы, не имеющие дочерних.
Скажите, это можно реализовать при помощи ExpandableListView и если нет, то при помощи чего?

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

--start--
Item1
Item2
Item3
    subitem1
    subitem2
    subitem3
Item4
Item5
    subitem1
    subitem2
    subitem3
--end--
такое подойдёт? http://android-adda.blogspot.com/2011/0 ... tview.html
R.id.team
Политика на форуме запрещена

Аватара пользователя
d79
Сообщения: 2
Зарегистрирован: 30 авг 2012, 15:29

Re: Урок 45. Список-дерево ExpandableListView

Сообщение d79 » 08 сен 2012, 14:52

А вообще вы можете создать для элементов свой layout, например, с тремя TextView. И к каждому элементу списка (Map) добавить еще по два атрибута: цена и цвет.
Как переделать цикл для добавления еще одного аттрибута элемента?
ну что-то вроде этого:

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

	        // создаем коллекцию элементов для первой группы
	        childDataItem = new ArrayList<Map<String, String>>();
	        // заполняем список аттрибутов для каждого элемента
	        for (String phone, price: phonesHTC, phonesHTCprice)  {   // такого цикла нет. как правильно?
	        		m = new HashMap<String, String>();
	        		m.put("phoneName", phone); // название телефона
	        		m.put("phonePrice", price); // цена телефона
	        		childDataItem.add(m);  
	        }
	        // добавляем в коллекцию коллекций
	        childData.add(childDataItem);

math64
Сообщения: 235
Зарегистрирован: 16 июл 2012, 07:47

Re: Урок 45. Список-дерево ExpandableListView

Сообщение math64 » 08 сен 2012, 18:12

phonesHTC и phonesHTCprice - это обычные массивы или списки?
Если обычные массивы - пользуйтесь обычным for по индексу.
Если списки - придётся использовать итераторы в явном виде.

beeline09
Сообщения: 33
Зарегистрирован: 23 сен 2012, 23:10

Re: Урок 45. Список-дерево ExpandableListView

Сообщение beeline09 » 23 сен 2012, 23:16

Скажите пожалуйста, а как можно сделать такой адаптер для ExpandableListView?
Изображение
То есть, чтобы полностью все осталось как в уроке, но я мог видеть название группы, описание ее и картинку группы, а по клику на нее просто подгруппы видеть-там мне картинки и описание не нужно. Очень надо, но я даже не представляю как переделать Ваш урок, чтоб получилось такое...

UPD: Я уже добавил данный шаблон к проекту. Поместил в более крупный крупный текст названия фирм. По нажатию на данный шаблон он разворачивается и показывается childGroup. В этом плане все нормально. Но. Допустим у меня есть массив стрингов GroupDescription. Я хочу его заполнить, чтоб он заполнял textview, который на скрине мелким шрифтом и плюс, чтоб к каждому элементу в соответствии с названиями фирм появлялись картинки. Можете помочь реализовать? Извинияюсь заранее ,если непонятно объяснил....

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 45. Список-дерево ExpandableListView

Сообщение damager82 » 24 сен 2012, 13:07

beeline09 писал(а):Допустим у меня есть массив стрингов GroupDescription. Я хочу его заполнить, чтоб он заполнял textview, который на скрине мелким шрифтом и плюс, чтоб к каждому элементу в соответствии с названиями фирм появлялись картинки.
Думаю, что стандартными средствами не сделать такого. Этот адаптер только текст понимает. Из хелпа: "These should all be TextViews".
Только свое что-то дописывать.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 45. Список-дерево ExpandableListView

Сообщение rezak90 » 24 сен 2012, 15:00

та кастомный нужно делать, делов то...
R.id.team
Политика на форуме запрещена

beeline09
Сообщения: 33
Зарегистрирован: 23 сен 2012, 23:10

Re: Урок 45. Список-дерево ExpandableListView

Сообщение beeline09 » 25 сен 2012, 15:10

damager82 писал(а):
beeline09 писал(а):Допустим у меня есть массив стрингов GroupDescription. Я хочу его заполнить, чтоб он заполнял textview, который на скрине мелким шрифтом и плюс, чтоб к каждому элементу в соответствии с названиями фирм появлялись картинки.
Думаю, что стандартными средствами не сделать такого. Этот адаптер только текст понимает. Из хелпа: "These should all be TextViews".
Только свое что-то дописывать.
Ну правильно. Я Список фирм телефонов заполнил. Просто в том шаблоне два TextView и один я уже заполнил списком фирм. Теперь мне нужно сделать список описаний для фирм и заполнить их в textview2 скажем так одновременно с textview1. Я надеюсь понятно изъяснился? :-)
та кастомный нужно делать, делов то...
Ну может поможешь тогда? ;-)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Урок 45. Список-дерево ExpandableListView

Сообщение rezak90 » 25 сен 2012, 15:21

beeline09 Для начала скажи в чём состоит трудность. Идею подкинули. Проблема реализовать адаптер? Примеров куча. Если реализовал адаптер, а он делает/показывает что то не то, то сбрасывай сюда и будем уже разбираться.
R.id.team
Политика на форуме запрещена

dil_android
Сообщения: 103
Зарегистрирован: 10 сен 2012, 11:58

Re: Урок 45. Список-дерево ExpandableListView

Сообщение dil_android » 02 окт 2012, 19:26

Здравствуйте.

В 43 уроке адаптер создавался при помощи метода createFromResource, используя массив из файла ресурсов.
Как, создавая адаптер при помощи SimpleExpandableListAdapter, указать использование массива из файла ресурсов, а не из Java кода.

Спасибо.

Ответить