Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Свой layout в качестве параметра адаптера SimpleExpandableListAdapter - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Ошибка INSTALL_FAILED_CONFLICTING_PROVIDER http://www.cyberforum.ru/android-dev/thread1654984.html
Дело вот в чем. Есть 2 проекта, когда на телефоне стоит одно из приложений, то второе уже не ставится, выбрасывает эту ошибку. Провайдеры ни в одном ни во втором не использую.
Программирование Android Как поместить Switch в NavigationView? Как поместить Switch в NavigationView? Пробовал поместить в меню NavigationView,но ничего не отображается activity_maps_drawer <?xml version="1.0" encoding="utf-8"?> <?xml version="1.0"... http://www.cyberforum.ru/android-dev/thread1654879.html
Получить качество сети Программирование Android
Как можно получить качество сети? т.е. 3G, GPRS, EDGI, WCDMA и т.д...
Поясните про поддержку разных экранов Программирование Android
Я туплю или эмулятор глючит ? В genymotion сделал 3 устройства, что бы поиграться разными layout для разных экранов: 1. 480х800 2. 768х1280 3. 1080х1920 И в тестовом проекте сделал 4 папки с...
Программирование Android Воспроизведение рандомной песни при нажатии на картинку http://www.cyberforum.ru/android-dev/thread1654819.html
вот как это сделать,имея такой код,да еще и когда музыка обрывается через 4 секунды? советовали использовать media.player а не soundpool для долгих звуков так как sound pool для коротких звуков,но я...
Программирование Android Сдвинуть 3 палочки Navigation drawer по умолчанию 3 палочки для открытия nav drawer находятся в верхнем левом углу(в Tool Barе). Как сместить эти три палочки вправо на несколько dp или вниз?? Ну то есть разместить как мне удобнее.... подробнее

Показать сообщение отдельно
q0o0p
1 / 1 / 0
Регистрация: 19.03.2014
Сообщений: 22

Свой layout в качестве параметра адаптера SimpleExpandableListAdapter - Программирование Android

04.02.2016, 15:51. Просмотров 372. Ответов 3
Метки (Все метки)

Добрый день! При изучении андроида в одном из примеров захотелось заменить стандартный элемент на собственный.
Вот неизмененный код урока, который работает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.example.anya.lesson45expandablelist;
 
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ExpandableListView;
import android.widget.SimpleExpandableListAdapter;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
 
public class MainActivity extends AppCompatActivity
{
    String[] groups = new String[] {"HTC", "Samsung", "LG"};
    String[] phonesHTC = new String[] {"Sensation", "Desire", "Wildfire", "Hero"};
    String[] phonesSams = new String[] {"Galaxy S II", "Galaxy Nexus", "Wave"};
    String[] phonesLG = new String[] {"Optimus", "Optimus Link", "Optimus Black", "Optimus One"};
    // коллекция для групп
    ArrayList<Map<String, String>> groupData;
    // коллекция для элементов одной группы
    ArrayList<Map<String, String>> childDataItem;
    // общая коллекция для коллекций элементов
    ArrayList<ArrayList<Map<String, String>>> childData;
    // в итоге получится childData = ArrayList<childDataItem>
    // список аттрибутов группы или элемента
    Map<String, String> m;
    ExpandableListView elvMain;
 
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        groupData = new ArrayList<Map<String, String>>();
        for (String group : groups) {
            m = new HashMap<String, String>();
            m.put("groupName", group);
            groupData.add(m);
        }
 
        String groupFrom[] = new String[] {"groupName"};
        int groupTo[] = new int [] {android.R.id.text1};
 
        childData = new ArrayList<ArrayList<Map<String, String>>>();
        childDataItem = new ArrayList<Map<String, String>>();
        for (String phone : phonesHTC) {
            m = new HashMap<String, String>();
            m.put("phoneName", phone);
            childDataItem.add(m);
        }
        childData.add(childDataItem);
 
        childDataItem = new ArrayList<Map<String, String>>();
        for (String phone : phonesSams) {
            m = new HashMap<String, String>();
            m.put("phoneName", phone);
            childDataItem.add(m);
        }
        childData.add(childDataItem);
 
        childDataItem = new ArrayList<Map<String, String>>();
        for (String phone : phonesLG) {
            m = new HashMap<String, String>();
            m.put("phoneName", phone);
            childDataItem.add(m);
        }
        childData.add(childDataItem);
 
        String childFrom[] = new String[] {"phoneName"};
        int childTo[] = new int [] {android.R.id.text1};
        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);
        elvMain = (ExpandableListView) findViewById(R.id.elvMain);
        elvMain.setAdapter(adapter);
    }
}
Вот код разметки main.xml

XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version= "1.0" encoding= "utf-8" ?>
<LinearLayout
    xmlns:android= "http://schemas.android.com/apk/res/android"
    android:layout_width= "fill_parent"
    android:layout_height= "fill_parent"
    android:orientation= "vertical" >
    <ExpandableListView
        android:id= "@+id/elvMain"
        android:layout_width= "match_parent"
        android:layout_height= "wrap_content" >
    </ExpandableListView>
</LinearLayout>
И я хочу заменить android.R.layout.simple_list_item_1 в конструкторе адаптера на свой, другой элемент. То есть, вместо android.R.layout.simple_list_item_1 я пишу R.layout.child_template, чтоб текст потомков был красный.
Вот xml код моего элемента:
XML
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="utf-8"?>
 
<TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@string/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:textColor="#FFFF2222"
    android:minHeight="?android:attr/listPreferredItemHeightSmall" />
Текст действительно становится красным [если у этого элемента в xml коде задать какой-то текст]. Но текстовые значения из childFrom теперь не привязываются. И текст пустой. В чем может быть моя ошибка?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru