expandablelistview

Интерфейс, диалоги, темы, стили, меню
Ответить
night22
Сообщения: 3
Зарегистрирован: 29 окт 2014, 09:13

expandablelistview

Сообщение night22 » 29 окт 2014, 09:48

Ребят подскажите плз, решил для практики свое не большое приложение запилить, в общем нужен мне раскрывающийся список, читал урок про expandablelistview, все в принципе получается, но нее могу понять цитирую "В итоге, в layout-ресурсе группы найдется элемент с ID = android.R.id.text1 и в него запишется текст из атрибута groupName". что это за ресурс, где его создавать? и еще цитирую: "android.R.layout.simple_expandable_list_item_1 – layout-ресурс, который будет использован для отображения группы в списке. Соответственно, запросто можно использовать свой layout-файл." "android.R.layout.simple_list_item_1 - layout-ресурс, который будет использован для отображения элемента в списке. Можно использовать свой layout-файл" аналогичный вопрос, что это за лайауты? Я в этом деле профан, так что пожалуйста обьясните предельно доходчиво. Ссылка на урок http://startandroid.ru/ru/uroki/vse-uro ... lelistview

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: expandablelistview

Сообщение doter.ua » 29 окт 2014, 11:50

Профан до 45 урока добрался? Layout - это как html - набор тегов для указания как будет выглядеть экран, Есть корневые - контейнеры, в которые потом помещаются остальные, их несколько видов (LinearLayout, RelativeLayout и т.д.) По поводу тех, которые помещаются в контейнеры - это кнопки, текстовые поля, поля для ввода и т.д. (Button, TextView, EditText). У каждого тега могут быть атрибуты: id, width, heigth и т.д. Так вот в файле xml, который в уроке есть элемент (тег) с id = android.R.id.text1, а в коде указывается, что нужно записать текст в элемент с таким ид. Как он его находит? для новичка это не важно, с опытом поймешь.
Как его создавать? создаешь новый xml файл, обычно при создании спрашивает какой корневой элемент сделать, т.к. это будет элемент списка, а не ВСЕГО ЭКРАНА, то корневые контейнеры тут не обязательны, можно сразу указывать TextView и настраивать его с помощью атриботов тега. Главное id указать @+id/text1

P.S. Для каждого элемента применяется макет (xml) с id = text1, этот ид не используется при обработке событий (нажатий) у адаптеров для этого свои велосипеды.
P.S. Каждый элемент не заполняет xml макет своими данными, он использует его как образец ,и на его основе создается такой же элемент (с помощью inflater) и автоматом добавляется в контейнер (ListView, в данном случае ExpandableListView или как там его.)
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

night22
Сообщения: 3
Зарегистрирован: 29 окт 2014, 09:13

Re: expandablelistview

Сообщение night22 » 29 окт 2014, 12:22

doter.ua писал(а):Профан до 45 урока добрался?
ну я не то что бы профан, до 30 урока свободно владею, представления про лайауты имею. Вопрос в другом, как раз таки в уроке в main.xml нет ни чего кроме <LinearLayout и <ExpandableListView, а от куда берется android.R.id.text1, android.R.layout.simple_list_item_1 и android.R.layout.simple_expandable_list_item_1. Т.Е обьясните пожалуйста что где создавать, ибо в уроке этого нет, а сам я еще не врубаюсь. Вы говорите создать лайаут с текст вью и тегом text1, не пойму какую он играет роль если и так есть лайаут с expandablelistview, и тем более не пойму от куда берутся android.R.layout.simple_list_item_1 и android.R.layout.simple_expandable_list_item_1.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: expandablelistview

Сообщение doter.ua » 30 окт 2014, 10:57

night22 писал(а):
doter.ua писал(а):Профан до 45 урока добрался?
ну я не то что бы профан, до 30 урока свободно владею ...
Обычно используется адрес: R.id.name, а в этот раз еще и приставка android.R.id.name - это системный ресурс (типа стандартный) http://developer.android.com/intl/ru/re ... oid/R.html вот ссыль, там есть раздел layout там и находятся эти стандартные ресурсы. Их можно посмотреть, открыв библиотеку(которая в проекте всегда, SDK кроч)

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

night22
Сообщения: 3
Зарегистрирован: 29 окт 2014, 09:13

Re: expandablelistview

Сообщение night22 » 30 окт 2014, 11:30

Спасибо всем за внимание, но вы не совсем поняли суть вопросса. Я знаю где создаются ресурсы и как они подключаются. Мне не понятно другое, получается я должен создать три ресурса, один с id=text1 и два layout описаных выше, мне совсем не ясна их роль в программе. Но я уже нашел решение, вернусь на несколько уроков назад и попробую понять все сам.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: expandablelistview

Сообщение doter.ua » 30 окт 2014, 12:50

night22 писал(а):Спасибо всем за внимание, но вы не совсем поняли суть вопросса. Я знаю где создаются ресурсы и как они подключаются. Мне не понятно другое, получается я должен создать три ресурса, один с id=text1 и два layout описаных выше, мне совсем не ясна их роль в программе. Но я уже нашел решение, вернусь на несколько уроков назад и попробую понять все сам.
Создается (или используются стандартные) два лейаута: один указывает, как будет выглядеть элемент списка. второй - как будет выглядеть элемент подпункта списка, который появляется при раскрытии главного. Вот и вся суть этих хмл.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: expandablelistview

Сообщение doter.ua » 30 окт 2014, 13:23

night22 писал(а):Спасибо всем за внимание, но вы не совсем поняли суть вопросса. Я знаю где создаются ресурсы и как они подключаются. Мне не понятно другое, получается я должен создать три ресурса, один с id=text1 и два layout описаных выше, мне совсем не ясна их роль в программе. Но я уже нашел решение, вернусь на несколько уроков назад и попробую понять все сам.
Свои хмл создаются в папке layout. Файл называют любое_имя.xml После чего его можно использовать обращаясь по такому адресу: R.layout.любое_имя
В уроке есть адаптер, на вход он требует xml файл (тот же simple list item 1 и т.д.) подставляешь ему свой R.layout.любое_имя.
Ниже код из класса SimpleExpandableListAdapter

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

    private void bindView(View view, Map<String, ?> data, String[] from, int[] to) {
        int len = to.length;

        for (int i = 0; i < len; i++) {
            TextView v = (TextView)view.findViewById(to[i]);
            if (v != null) {
                v.setText((String)data.get(from[i]));
            }
        }
    }
где to - массив с айдишниками, которые передаются при создании адаптера. Этот массив должен содержать ID которые есть в xml макете, т.е. в уроке передают android.R.id.text1, потому, что в стандартном макете android.R.layout.simple_list_item_1 у элемента как раз такой ID.
Вот содержимое android.R.layout.simple_list_item_1

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

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
/>
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Ответить