Урок 45. Список-дерево ExpandableListView
Re: Урок 45. Список-дерево ExpandableListView
Здравствуйте, форумчане!
У меня проблема не по уроку, или по уроку, пока не пойму... но проблема такова: у меня eclipse не хочет ранить именно этот урок. Когда он начинает делать compile, загрузка программы на эмулятор идет как будто бесконечно. Когда я пытаюсь закрыть эклипс, то он не закрывается, ждет завершения процесса загрузки проекта в эмулятор. После закрытия проекта с помощью Диспетчера Задач, ТОТАЛ Командер не может куда-либо скопировать этот проект. Но после перезагрузки компа, и предварительно не ранить проект в эклипсе, то ТОТАЛ скопирует проект.
Самое главное, что это действует только на один проект. Я пытался пересоздать проект заново, но уже не со своим кодом, а тупо copy paste с урока, но он все равно выдает такую ошибку.
Please, help me
У меня проблема не по уроку, или по уроку, пока не пойму... но проблема такова: у меня eclipse не хочет ранить именно этот урок. Когда он начинает делать compile, загрузка программы на эмулятор идет как будто бесконечно. Когда я пытаюсь закрыть эклипс, то он не закрывается, ждет завершения процесса загрузки проекта в эмулятор. После закрытия проекта с помощью Диспетчера Задач, ТОТАЛ Командер не может куда-либо скопировать этот проект. Но после перезагрузки компа, и предварительно не ранить проект в эклипсе, то ТОТАЛ скопирует проект.
Самое главное, что это действует только на один проект. Я пытался пересоздать проект заново, но уже не со своим кодом, а тупо copy paste с урока, но он все равно выдает такую ошибку.
Please, help me
Re: Урок 45. Список-дерево ExpandableListView
Скажите пожалуйста, а как переделать данный урок так, чтоб для каждой группы показывались свои изображения из assets, а для каждой подгруппы...тоже свои изображения из assets)) ?
Сейчас начнете типа пиши свой кастомный адаптер и т.п. Я еще не догоняю все это. Просто мне нужно реализовать данную возможность, а понять как модифицировать адаптер не могу.
предполагаю, что нужно будет для групп и подгрупп (естественно) заводить массив строк, в котором будут храниться пути к файлам изображений в assets. В общем, это для меня пока сложно, но очень необходимо в данный момент. Прошу помощи в написании подобного адаптера.
Сейчас начнете типа пиши свой кастомный адаптер и т.п. Я еще не догоняю все это. Просто мне нужно реализовать данную возможность, а понять как модифицировать адаптер не могу.
предполагаю, что нужно будет для групп и подгрупп (естественно) заводить массив строк, в котором будут храниться пути к файлам изображений в assets. В общем, это для меня пока сложно, но очень необходимо в данный момент. Прошу помощи в написании подобного адаптера.
Re: Урок 45. Список-дерево ExpandableListView
Я склеил SimpleExpandableListAdapter и SimpleAdapter, чтобы результат умел работать не только с TextView, но и с ImageView. Странно, что этого не сделали по-дефолту. Посмотрите Урок 48 про SimpleAdapter, чтобы понять механизм.beeline09 писал(а):Скажите пожалуйста, а как переделать данный урок так, чтоб для каждой группы показывались свои изображения из assets, а для каждой подгруппы...тоже свои изображения из assets)) ?
Файлы в архиве:
MyExpAdapter.java - получившийся адаптер
MainAct.java - пример из Урока 45, заточенный под новый адаптер. Сейчас везде вставляется одна и та же картинка. Меняйте ее на свои. Работает как указание id (R.drawable.icon), так и указание имени файла из assets ("icon.png").
item_group.xml - layout для группы. Обратите внимание на атрибут android:paddingLeft. Он нужен, чтобы был отступ.
item_child.xml - layout для элемента
layout-файлы меняйте, как вам нужно.
Делал поверхностно, возможны баги. Потестируйте.
- Вложения
-
- MyExpAdapter.7z
- (3.76 КБ) 368 скачиваний
Re: Урок 45. Список-дерево ExpandableListView
Что-то не понимаю почему, но не работает-вываливается с ошибкой. Не пойму. Все должно работать, а ошибку так понять и не могу... Вот лог:damager82 писал(а):Я склеил SimpleExpandableListAdapter и SimpleAdapter, чтобы результат умел работать не только с TextView, но и с ImageView. Странно, что этого не сделали по-дефолту. Посмотрите Урок 48 про SimpleAdapter, чтобы понять механизм.beeline09 писал(а):Скажите пожалуйста, а как переделать данный урок так, чтоб для каждой группы показывались свои изображения из assets, а для каждой подгруппы...тоже свои изображения из assets)) ?
Файлы в архиве:
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
Зачем совмещать адптеры? Есть же BaseExpandableListAdapter. Я делал так: передавал список из Map. getGroupView загружает лейаут свёрнутого списка, а getChildView его развёрнутого.
Вот проект: http://zalil.ru/33885924
Развёрнутый:
З.Ы. Программа каждыйе 5 сек (а может и меньше, уже не помню) обновляет данные с сервера и отображает валюты, и как они изменились за последние 5 сек (стрелки показывают упал курс или нет). Задумывалась всё как в качестве урока сделать, но руки не доходят (а прошло с тех пор уже 3 месяца).
Вот проект: http://zalil.ru/33885924
Развёрнутый:
З.Ы. Программа каждыйе 5 сек (а может и меньше, уже не помню) обновляет данные с сервера и отображает валюты, и как они изменились за последние 5 сек (стрелки показывают упал курс или нет). Задумывалась всё как в качестве урока сделать, но руки не доходят (а прошло с тех пор уже 3 месяца).
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 19
- Зарегистрирован: 30 дек 2012, 10:43
Re: Урок 45. Список-дерево ExpandableListView
Можно для вывода дочернего списка элементов прописать различные Layouts? То бишь...один элемент должен принимать 4 атрибута и иметь один вид, второй принимает 6 элементов и имеет другой вид.
-
- Сообщения: 19
- Зарегистрирован: 30 дек 2012, 10:43
Re: Урок 45. Список-дерево ExpandableListView
Можно пример?...где это хотя бы реализовать...rezak90 писал(а):конечно можно
Re: Урок 45. Список-дерево ExpandableListView
есть же два метода getChildView и getGroupView, в них исходя от входных данных подсовывайте любую разметку
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 19
- Зарегистрирован: 30 дек 2012, 10:43
Re: Урок 45. Список-дерево ExpandableListView
т.е. при формировании в адаптере идет вызов этих методов? и там уже цеплять все? так?rezak90 писал(а):есть же два метода getChildView и getGroupView, в них исходя от входных данных подсовывайте любую разметку
-
- Сообщения: 19
- Зарегистрирован: 30 дек 2012, 10:43
Re: Урок 45. Список-дерево ExpandableListView
А вот когда в адаптере параметры указываются layout...с ним что делать?rezak90 писал(а):да, всё верно
Re: Урок 45. Список-дерево ExpandableListView
вы хоть кастомный адаптер пишите? там в тех метода что я указал, инфлейтите тот лейаут который хотите и т.д.
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 19
- Зарегистрирован: 30 дек 2012, 10:43
Re: Урок 45. Список-дерево ExpandableListView
Использую из урока...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
ну здесь вам не судьба использовать два лейаута))) конечно же в таких делах нужно свой писать
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 19
- Зарегистрирован: 30 дек 2012, 10:43
Re: Урок 45. Список-дерево ExpandableListView
вот хорошо что поняли) теперь есть толковый пример по написанию своего адаптера?rezak90 писал(а):ну здесь вам не судьба использовать два лейаута))) конечно же в таких делах нужно свой писать
Re: Урок 45. Список-дерево ExpandableListView
да в гугле полно примеров "android custom expandablelistview" (1 940 000 страниц)
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 19
- Зарегистрирован: 30 дек 2012, 10:43
Re: Урок 45. Список-дерево ExpandableListView
в моем случае достаточно переопеределить getChildView?rezak90 писал(а):да в гугле полно примеров "android custom expandablelistview" (1 940 000 страниц)
млин что-то я совсем не въехал...(
можно набросать примерчик по моему случаю?
у меня для 1 вида есть 4 атрибута, для 2 вида есть 6 атрибутов...и разные layouts...где мне отслеживать что 4 или 6 атрибутов, они ложатся в различные TextView...
Re: Урок 45. Список-дерево ExpandableListView
почему так сложно въехать в саму суть, всего два метода реализовать в которых строим главный айтем и дочерний, набросать пример это любой пример подойдёт просто вникните в то что такое адаптер, кратко: создайте класс в котором будут данные, создайте коллекцию в которой будет массив объектов этого класса, создайте адаптер в который следует передать эту коллекцию, переопределите по крайней мере 6 методов (по два метода на группу и ребёнка которые возвращают размер коллекции и объект по текущей позиции, и методы getChildView и getGroupView в которых инфлейтите нужный лейаут в зависимости от текущего айтема)... даже первый пример из гугла http://android-adda.blogspot.com/2011/0 ... tview.html чем не пример?
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
-
- Сообщения: 19
- Зарегистрирован: 30 дек 2012, 10:43
Re: Урок 45. Список-дерево ExpandableListView
Спасибо все помогло...но не до конца сделал...осталось выборку сделать для какого элемента какой слой...по чем лучше сделать? И правильно я делаю, что передаю в адаптер все 10 атрибутов? и он уже потом проставляет нужные?
А, еще, где можно подглядеть код SimpleExpandableListAdapter? Т.е. хотелось бы посмотреть содержимое его методов? Этот вопрос решился....нашел исходники класса...
Я своему адаптеру передаю:
Как мне в адаптере работать с этими значениями? Вывел, вот такое , но возможно как то напрямую обращаться через имя? Добавляется:
В исходнике тоже идет через элемент массива...а напрямую получается никак?
А, еще, где можно подглядеть код 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]+"мин");