Урок 46. События ExpandableListView

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

Урок 46. События ExpandableListView

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

В этом уроке:

- обрабатываем события дерева-списка

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

sergey.solovey
Сообщения: 1
Зарегистрирован: 10 янв 2012, 18:07

Re: Урок 46. События ExpandableListView

Сообщение sergey.solovey » 10 янв 2012, 18:10

подскажите пожалуйста, как по нажатию на элемент открывать html файл?
например, по клику на название телефона открывать его описание в формате html...

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

Re: Урок 46. События ExpandableListView

Сообщение damager82 » 10 янв 2012, 20:34

Да, получал ваше сообщение по почте. Седня-завтра посмотрю и отвечу.
Ну либо кто-нить другой ответит раньше :)
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

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

Re: Урок 46. События ExpandableListView

Сообщение damager82 » 11 янв 2012, 14:54

Т.е. вопрос - как открыть html файл из assets и показать его.

Смотрите урок 32 на сайте, там я показываю компонент, который умеет показывать html. Здесь о нем можно почитать.
Только в уроке я гружу URL, а вам нужен файл. Подойдет метод WebView.loadData. Он на вход принимает html-строку.

Вам остается прочесть файл, получить из байтов строку и отдать ее WebView-компоненту.
Прочесть файл в InputStream можно так:

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

getAssets().open(file); 
Где file - это строка, имя файла.

Если чего не получится, сообщайте. Напишу код-пример.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

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

Re: Урок 46. События ExpandableListView

Сообщение Slavko » 12 фев 2012, 04:55

подскажите, возникла проблема.
хотел модернизировать код
перенести все данные массивов в ресурсный файл
сделал в strings.xml
<string-array name="firm">
<item >HTC</item>
<item >Samsung</item>
<item >LG</item>
</string-array>
в классе AdapterHelper изменил
String[] groups = new String[] {"HTC", "Samsung", "LG"};
на
String[] groups = getResources().getStringArray(R.array.firm);
дает ошибку выполнения.
аналогичное решение работало в уроке 43, здесь нет.
в чем ошибка?

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

Re: Урок 46. События ExpandableListView

Сообщение damager82 » 14 фев 2012, 16:56

Именно эта строка дает ошибку?

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

String[] groups = getResources().getStringArray(R.array.firm);
Какой текст ошибки?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

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

Re: Урок 46. События ExpandableListView

Сообщение Slavko » 14 фев 2012, 23:15

массив пустой
String[] groups = getResources().getStringArray(R.array.firm);
не отработала
ошибку дает первый оператор использования массива groups
for (String group : groups) {

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

Re: Урок 46. События ExpandableListView

Сообщение damager82 » 17 фев 2012, 12:53

Если данные описаны так: <string-array name="firm">
и внутри куча item, то странно, что не работает.

Может что-то заглючило в Eclipse, попробуйте вместо firm использовать другое слово.

Если не работает, выложите здесь xml-текст, который ваш массив описывает. Посмотрим.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

SoLVeX
Сообщения: 15
Зарегистрирован: 21 фев 2012, 19:11
Контактная информация:

Re: Урок 46. События ExpandableListView

Сообщение SoLVeX » 21 фев 2012, 19:55

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

String[] groups;

//in getAdapter()
groups= ctx.getResources().getStringArray(R.array.commGroup);

Natalia
Сообщения: 15
Зарегистрирован: 03 ноя 2012, 17:09

Re: Урок 46. События ExpandableListView

Сообщение Natalia » 04 янв 2013, 19:56

Обьясните пожалуйста назначение underscore, и необходимость его использования
ctx = _ctx;

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

Re: Урок 46. События ExpandableListView

Сообщение rezak90 » 04 янв 2013, 21:26

Natalia писал(а):Обьясните пожалуйста назначение underscore, и необходимость его использования
ctx = _ctx;
это контекст приложения с помощью которого можем получить например доступ к ресурсам (в данном примере).
R.id.team
Политика на форуме запрещена

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

Re: Урок 46. События ExpandableListView

Сообщение damager82 » 14 янв 2013, 10:34

Natalia писал(а):Обьясните пожалуйста назначение underscore, и необходимость его использования
ctx = _ctx;
Подчеркивание сделано, чтобы переменные имели разные имена.
Без подчеркивания надо было бы писать this.ctx = ctx. Кто-то именно так и делает и подчеркивания не использует. На вкус и цвет ... )
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

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

Re: Урок 46. События ExpandableListView

Сообщение rezak90 » 14 янв 2013, 20:35

из истории... подчёркивание свойственно С, там принята такая конструкция, в более языках java, c# принято this, даже сам Eclipse при генерации кода ставит this (но это можно перенастроить).
R.id.team
Политика на форуме запрещена

grecd
Сообщения: 19
Зарегистрирован: 08 мар 2013, 14:36

Re: Урок 46. События ExpandableListView

Сообщение grecd » 02 май 2013, 22:18

Пытаюсь сделать особенный child лайаут такой чтобы при нажатии на child элемент
высвечивалась картинка , которая до этого была невидимой
вот такой код

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

 adapter = new SimpleExpandableListAdapter(
            this,
            groupData,
            android.R.layout.simple_expandable_list_item_1,
            groupFrom,
            groupTo,
            childData,
            R.layout.childrow,
            childFrom,
            childTo);
            
        elvMain = (ExpandableListView) findViewById(R.id.elvValues);
        elvMain.setAdapter(adapter);
        
        elvMain.setOnChildClickListener(new OnChildClickListener() {
            public boolean onChildClick(ExpandableListView parent, View v,
                int groupPosition,   int childPosition, long id) {
              Log.d("Childclick", "onChildClick groupPosition = " + groupPosition + 
                      " childPosition = " + childPosition + 
                      " id = " + id);
             
               ImageView ok = (ImageView) findViewById(R.id.imageOk);
                ok.setVisibility(View.VISIBLE);

В итоге нажимать нужно раскрыв все группы начинать нажимать с самой последней
иначе картинка видна только в первом чаилде первой группы .

Update - картинка становится видна только в первом чаилде первой группы
Есть какое нибудь решение?

Никита
Сообщения: 5
Зарегистрирован: 05 окт 2013, 18:16

Re: Урок 46. События ExpandableListView

Сообщение Никита » 05 окт 2013, 18:54

damager82 писал(а):Т.е. вопрос - как открыть html файл из assets и показать его.

Смотрите урок 32 на сайте, там я показываю компонент, который умеет показывать html. Здесь о нем можно почитать.
Только в уроке я гружу URL, а вам нужен файл. Подойдет метод WebView.loadData. Он на вход принимает html-строку.

Вам остается прочесть файл, получить из байтов строку и отдать ее WebView-компоненту.
Прочесть файл в InputStream можно так:

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

getAssets().open(file); 
Где file - это строка, имя файла.

Если чего не получится, сообщайте. Напишу код-пример.
Приветствую! Тот же вопрос, нужно по нажатию на элемент открывать html файл. Напишите пожалуйста код-пример.

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Урок 46. События ExpandableListView

Сообщение trew » 05 окт 2013, 21:36

[quote="Никита"][/quote]
Разместил ответ в уроке 32
viewtopic.php?f=3&t=126&p=18592#p18592
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Никита
Сообщения: 5
Зарегистрирован: 05 окт 2013, 18:16

Re: Урок 46. События ExpandableListView

Сообщение Никита » 06 окт 2013, 13:28

trew писал(а):
Никита писал(а):
Разместил ответ в уроке 32
viewtopic.php?f=3&t=126&p=18592#p18592
Спасибо, применил ваш метод в уроке 32, получилось (я нажимал кнопку, и открывался мой html файл). А как мне сделать это в уроке 46? Как-то привязывать к каждому варианту новый html документ?

Никита
Сообщения: 5
Зарегистрирован: 05 окт 2013, 18:16

Re: Урок 46. События ExpandableListView

Сообщение Никита » 06 окт 2013, 13:38

trew писал(а):
Никита писал(а):
Разместил ответ в уроке 32
viewtopic.php?f=3&t=126&p=18592#p18592
Находил пример (там использовался ListView, и при нажатии на один из элементов списка, открывался текстовый файл) текстовые файлы помещались в папку. а код был реализован таким образом, что эти файлы как-то автоматом привязывались к элементам списка и при нажатии открывались.

Никита
Сообщения: 5
Зарегистрирован: 05 окт 2013, 18:16

Re: Урок 46. События ExpandableListView

Сообщение Никита » 06 окт 2013, 13:45

trew писал(а):
Никита писал(а):
Разместил ответ в уроке 32
viewtopic.php?f=3&t=126&p=18592#p18592
У нас же структура тут сложнее. Варианты расположены в группах

Mamapapa
Сообщения: 7
Зарегистрирован: 10 окт 2013, 15:55

Re: Урок 46. События ExpandableListView

Сообщение Mamapapa » 10 окт 2013, 16:03

Хотел бы узнать можно ли добавить картинку в Child?Если да то каким методом?
Вложения
Безымянный.jpg
Безымянный.jpg (50.12 КБ) 23354 просмотра

Ответить