Страница 1 из 10

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

Добавлено: 26 дек 2011, 03:00
damager82
В этом уроке:

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

Click here to read this article!

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

Добавлено: 25 янв 2012, 17:12
Slavko
привет всем!
попробовал поэкспериментировать с настройками
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"
/>

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

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

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

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

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

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

Добавлено: 28 янв 2012, 16:38
damager82
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 отвечающем за группы?

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

Добавлено: 01 фев 2012, 09:41
Dull
45 и 46 урок, вопрос - как при открытии списка закрыть предыдущий открытый список. - требуется только 1 открытый список.

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

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

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

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

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

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

if (currGroup != groupPosition) {
	elvMain.collapseGroup(currGroup);
	currGroup = groupPosition;
}
Особо не тестил, но вроде работает без сбоев.

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

Добавлено: 11 июн 2012, 00:06
Xroft
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? эклипс матерится когда я его открываю.

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

Добавлено: 13 июн 2012, 10:24
damager82
Xroft писал(а):кстати, как отредактировать android.R.layout.simple_list_item_1? эклипс матерится когда я его открываю.
Я думаю, никак. Только копию свою создать.

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

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

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

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

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

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

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

Добавлено: 09 авг 2012, 10:35
rezak90
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

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

Добавлено: 08 сен 2012, 14:52
d79
А вообще вы можете создать для элементов свой 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);

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

Добавлено: 08 сен 2012, 18:12
math64
phonesHTC и phonesHTCprice - это обычные массивы или списки?
Если обычные массивы - пользуйтесь обычным for по индексу.
Если списки - придётся использовать итераторы в явном виде.

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

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

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

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

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

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

Добавлено: 24 сен 2012, 15:00
rezak90
та кастомный нужно делать, делов то...

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

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

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

Добавлено: 25 сен 2012, 15:21
rezak90
beeline09 Для начала скажи в чём состоит трудность. Идею подкинули. Проблема реализовать адаптер? Примеров куча. Если реализовал адаптер, а он делает/показывает что то не то, то сбрасывай сюда и будем уже разбираться.

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

Добавлено: 02 окт 2012, 19:26
dil_android
Здравствуйте.

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

Спасибо.