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

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

Добавлено: 05 окт 2012, 21:44
danik
Здравствуйте, форумчане!

У меня проблема не по уроку, или по уроку, пока не пойму... но проблема такова: у меня eclipse не хочет ранить именно этот урок. Когда он начинает делать compile, загрузка программы на эмулятор идет как будто бесконечно. Когда я пытаюсь закрыть эклипс, то он не закрывается, ждет завершения процесса загрузки проекта в эмулятор. После закрытия проекта с помощью Диспетчера Задач, ТОТАЛ Командер не может куда-либо скопировать этот проект. Но после перезагрузки компа, и предварительно не ранить проект в эклипсе, то ТОТАЛ скопирует проект.

Самое главное, что это действует только на один проект. Я пытался пересоздать проект заново, но уже не со своим кодом, а тупо copy paste с урока, но он все равно выдает такую ошибку.

Please, help me

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

Добавлено: 23 окт 2012, 14:59
beeline09
Скажите пожалуйста, а как переделать данный урок так, чтоб для каждой группы показывались свои изображения из assets, а для каждой подгруппы...тоже свои изображения из assets)) ?
Сейчас начнете типа пиши свой кастомный адаптер и т.п. Я еще не догоняю все это. Просто мне нужно реализовать данную возможность, а понять как модифицировать адаптер не могу.
предполагаю, что нужно будет для групп и подгрупп (естественно) заводить массив строк, в котором будут храниться пути к файлам изображений в assets. В общем, это для меня пока сложно, но очень необходимо в данный момент. Прошу помощи в написании подобного адаптера.

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

Добавлено: 24 окт 2012, 10:39
damager82
beeline09 писал(а):Скажите пожалуйста, а как переделать данный урок так, чтоб для каждой группы показывались свои изображения из assets, а для каждой подгруппы...тоже свои изображения из assets)) ?
Я склеил SimpleExpandableListAdapter и SimpleAdapter, чтобы результат умел работать не только с TextView, но и с ImageView. Странно, что этого не сделали по-дефолту. Посмотрите Урок 48 про SimpleAdapter, чтобы понять механизм.

Файлы в архиве:

MyExpAdapter.java - получившийся адаптер

MainAct.java - пример из Урока 45, заточенный под новый адаптер. Сейчас везде вставляется одна и та же картинка. Меняйте ее на свои. Работает как указание id (R.drawable.icon), так и указание имени файла из assets ("icon.png").

item_group.xml - layout для группы. Обратите внимание на атрибут android:paddingLeft. Он нужен, чтобы был отступ.

item_child.xml - layout для элемента

layout-файлы меняйте, как вам нужно.

Делал поверхностно, возможны баги. Потестируйте.

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

Добавлено: 24 окт 2012, 11:22
beeline09
damager82 писал(а):
beeline09 писал(а):Скажите пожалуйста, а как переделать данный урок так, чтоб для каждой группы показывались свои изображения из assets, а для каждой подгруппы...тоже свои изображения из assets)) ?
Я склеил SimpleExpandableListAdapter и SimpleAdapter, чтобы результат умел работать не только с TextView, но и с ImageView. Странно, что этого не сделали по-дефолту. Посмотрите Урок 48 про SimpleAdapter, чтобы понять механизм.

Файлы в архиве:

MyExpAdapter.java - получившийся адаптер

MainAct.java - пример из Урока 45, заточенный под новый адаптер. Сейчас везде вставляется одна и та же картинка. Меняйте ее на свои. Работает как указание id (R.drawable.icon), так и указание имени файла из assets ("icon.png").

item_group.xml - layout для группы. Обратите внимание на атрибут android:paddingLeft. Он нужен, чтобы был отступ.

item_child.xml - layout для элемента

layout-файлы меняйте, как вам нужно.

Делал поверхностно, возможны баги. Потестируйте.
Что-то не понимаю почему, но не работает-вываливается с ошибкой. Не пойму. Все должно работать, а ошибку так понять и не могу... Вот лог:
  • 10-24 12:15:39.300: E/AndroidRuntime(16726): FATAL EXCEPTION: main
    10-24 12:15:39.300: E/AndroidRuntime(16726): java.lang.NullPointerException
    10-24 12:15:39.300: E/AndroidRuntime(16726): at com.popvtest.adg.MyExpAdapter.setViewImage(MyExpAdapter.java:168)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at com.popvtest.adg.MyExpAdapter.bindView(MyExpAdapter.java:135)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at com.popvtest.adg.MyExpAdapter.getGroupView(MyExpAdapter.java:201)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:445)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.AbsListView.obtainView(AbsListView.java:2033)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.ListView.measureHeightOfChildren(ListView.java:1244)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.ListView.onMeasure(ListView.java:1155)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.view.View.measure(View.java:12723)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.RelativeLayout.measureChild(RelativeLayout.java:579)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:392)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.view.View.measure(View.java:12723)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.view.View.measure(View.java:12723)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.LinearLayout.measureVertical(LinearLayout.java:816)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.LinearLayout.onMeasure(LinearLayout.java:557)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.view.View.measure(View.java:12723)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.view.View.measure(View.java:12723)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.os.Handler.dispatchMessage(Handler.java:99)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.os.Looper.loop(Looper.java:137)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at android.app.ActivityThread.main(ActivityThread.java:4471)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at java.lang.reflect.Method.invokeNative(Native Method)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at java.lang.reflect.Method.invoke(Method.java:511)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
    10-24 12:15:39.300: E/AndroidRuntime(16726): at dalvik.system.NativeStart.main(Native Method)

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

Добавлено: 24 окт 2012, 13:26
rezak90
Зачем совмещать адптеры? Есть же BaseExpandableListAdapter. Я делал так: передавал список из Map. getGroupView загружает лейаут свёрнутого списка, а getChildView его развёрнутого.
Вот проект: http://zalil.ru/33885924
Изображение
Развёрнутый:
Изображение

З.Ы. Программа каждыйе 5 сек (а может и меньше, уже не помню) обновляет данные с сервера и отображает валюты, и как они изменились за последние 5 сек (стрелки показывают упал курс или нет). Задумывалась всё как в качестве урока сделать, но руки не доходят (а прошло с тех пор уже 3 месяца).

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

Добавлено: 02 янв 2013, 22:52
denisneposeda
Можно для вывода дочернего списка элементов прописать различные Layouts? То бишь...один элемент должен принимать 4 атрибута и иметь один вид, второй принимает 6 элементов и имеет другой вид.

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

Добавлено: 02 янв 2013, 23:33
rezak90
конечно можно

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

Добавлено: 02 янв 2013, 23:39
denisneposeda
rezak90 писал(а):конечно можно
Можно пример?...где это хотя бы реализовать...

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

Добавлено: 03 янв 2013, 00:30
rezak90
есть же два метода getChildView и getGroupView, в них исходя от входных данных подсовывайте любую разметку

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

Добавлено: 03 янв 2013, 02:20
denisneposeda
rezak90 писал(а):есть же два метода getChildView и getGroupView, в них исходя от входных данных подсовывайте любую разметку
т.е. при формировании в адаптере идет вызов этих методов? и там уже цеплять все? так?

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

Добавлено: 03 янв 2013, 09:00
rezak90
да, всё верно

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

Добавлено: 03 янв 2013, 11:26
denisneposeda
rezak90 писал(а):да, всё верно
А вот когда в адаптере параметры указываются layout...с ним что делать?

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

Добавлено: 03 янв 2013, 18:56
rezak90
вы хоть кастомный адаптер пишите? там в тех метода что я указал, инфлейтите тот лейаут который хотите и т.д.

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

Добавлено: 03 янв 2013, 21:28
denisneposeda
rezak90 писал(а):вы хоть кастомный адаптер пишите? там в тех метода что я указал, инфлейтите тот лейаут который хотите и т.д.
Использую из урока...

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

SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
            this,
            groupData,
            android.R.layout.simple_expandable_list_item_1,
            groupFrom,
            groupTo,
            childData,
            android.R.layout.simple_list_item_1,
            childFrom,
            childTo);

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

Добавлено: 03 янв 2013, 21:57
rezak90
ну здесь вам не судьба использовать два лейаута))) конечно же в таких делах нужно свой писать

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

Добавлено: 03 янв 2013, 22:58
denisneposeda
rezak90 писал(а):ну здесь вам не судьба использовать два лейаута))) конечно же в таких делах нужно свой писать
вот хорошо что поняли) теперь есть толковый пример по написанию своего адаптера?

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

Добавлено: 03 янв 2013, 23:29
rezak90
да в гугле полно примеров "android custom expandablelistview" (1 940 000 страниц)

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

Добавлено: 04 янв 2013, 00:27
denisneposeda
rezak90 писал(а):да в гугле полно примеров "android custom expandablelistview" (1 940 000 страниц)
в моем случае достаточно переопеределить getChildView?
млин что-то я совсем не въехал...(
можно набросать примерчик по моему случаю?
у меня для 1 вида есть 4 атрибута, для 2 вида есть 6 атрибутов...и разные layouts...где мне отслеживать что 4 или 6 атрибутов, они ложатся в различные TextView...

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

Добавлено: 04 янв 2013, 01:17
rezak90
почему так сложно въехать в саму суть, всего два метода реализовать в которых строим главный айтем и дочерний, набросать пример это любой пример подойдёт просто вникните в то что такое адаптер, кратко: создайте класс в котором будут данные, создайте коллекцию в которой будет массив объектов этого класса, создайте адаптер в который следует передать эту коллекцию, переопределите по крайней мере 6 методов (по два метода на группу и ребёнка которые возвращают размер коллекции и объект по текущей позиции, и методы getChildView и getGroupView в которых инфлейтите нужный лейаут в зависимости от текущего айтема)... даже первый пример из гугла http://android-adda.blogspot.com/2011/0 ... tview.html чем не пример?

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

Добавлено: 04 янв 2013, 04:14
denisneposeda
Спасибо все помогло...но не до конца сделал...осталось выборку сделать для какого элемента какой слой...по чем лучше сделать? И правильно я делаю, что передаю в адаптер все 10 атрибутов? и он уже потом проставляет нужные?

А, еще, где можно подглядеть код SimpleExpandableListAdapter? Т.е. хотелось бы посмотреть содержимое его методов? Этот вопрос решился....нашел исходники класса...

Я своему адаптеру передаю:

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

String[] groupFrom = {ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_CLOCK}; 
Как мне в адаптере работать с этими значениями? Вывел, вот такое

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

mygroupData.get(groupPosition).get(mygroupFrom[0]).toString(), где private ArrayList<Map<String, Object>> mygroupData;
, но возможно как то напрямую обращаться через имя? Добавляется:

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

 m.put(ATTRIBUTE_NAME_TEXT, text_s);
m.put(ATTRIBUTE_NAME_CLOCK, groups_clock[i]+"мин");
В исходнике тоже идет через элемент массива...а напрямую получается никак? :oops: