Страница 1 из 1
expandablelistview
Добавлено: 29 окт 2014, 09:48
night22
Ребят подскажите плз, решил для практики свое не большое приложение запилить, в общем нужен мне раскрывающийся список, читал урок про 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
Re: expandablelistview
Добавлено: 29 окт 2014, 11:50
doter.ua
Профан до 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 или как там его.)
Re: expandablelistview
Добавлено: 29 окт 2014, 12:22
night22
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.
Re: expandablelistview
Добавлено: 30 окт 2014, 10:57
doter.ua
night22 писал(а):doter.ua писал(а):Профан до 45 урока добрался?
ну я не то что бы профан, до 30 урока свободно владею ...
Обычно используется адрес: R.id.name, а в этот раз еще и приставка
android.R.id.name - это системный ресурс (типа стандартный)
http://developer.android.com/intl/ru/re ... oid/R.html вот ссыль, там есть раздел layout там и находятся эти стандартные ресурсы. Их можно посмотреть, открыв библиотеку(которая в проекте всегда, SDK кроч)

Re: expandablelistview
Добавлено: 30 окт 2014, 11:30
night22
Спасибо всем за внимание, но вы не совсем поняли суть вопросса. Я знаю где создаются ресурсы и как они подключаются. Мне не понятно другое, получается я должен создать три ресурса, один с id=text1 и два layout описаных выше, мне совсем не ясна их роль в программе. Но я уже нашел решение, вернусь на несколько уроков назад и попробую понять все сам.
Re: expandablelistview
Добавлено: 30 окт 2014, 12:50
doter.ua
night22 писал(а):Спасибо всем за внимание, но вы не совсем поняли суть вопросса. Я знаю где создаются ресурсы и как они подключаются. Мне не понятно другое, получается я должен создать три ресурса, один с id=text1 и два layout описаных выше, мне совсем не ясна их роль в программе. Но я уже нашел решение, вернусь на несколько уроков назад и попробую понять все сам.
Создается (или используются стандартные) два лейаута: один указывает, как будет выглядеть
элемент списка. второй - как будет выглядеть
элемент подпункта списка, который появляется при раскрытии главного. Вот и вся суть этих хмл.
Re: expandablelistview
Добавлено: 30 окт 2014, 13:23
doter.ua
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"
/>