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

Передача HashSet<Object1,List<Object2>> в адаптер BaseExpandableListAdapter для отображения ExpandableListView - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Добавить скрол в сам элемент TextView http://www.cyberforum.ru/android-dev/thread1781507.html
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/scrollView" android:layout_width="match_parent" ...
Программирование Android Загрузка текста с сайта Проблема такая - научился получать данные с сайта, но они в приходят в виде входного потока байт (InputStream). Как можно выделить только интересующие меня поля? То есть например на сайте есть поле с... http://www.cyberforum.ru/android-dev/thread1781417.html
Вывод message Программирование Android
Message msg = h.obtainMessage(); Bundle b = new Bundle(); b.putString("KEY1", ParseQuery); // b.putString("KEY2", ParseQueryForeCast); ...
Получить очередь сообщений Handler Программирование Android
Сообщение отправляется таким способом Message msg = h.obtainMessage(); Bundle b = new Bundle(); b.putString("KEY1", ParseQuery); ...
Программирование Android Получение данных из cursor http://www.cyberforum.ru/android-dev/thread1781185.html
У меня огромный вопрос по работе с SQLite, а именно Cursor. В общем то при запросе к бд все норм, при создании класса бд все норм, везде все норм, но один лишь курсор, из за которого у меня горит уже...
Программирование Android Android arrayList У меня есть два активити, в одном получаю значения и записываю их в ArrayList, а в другом мне их нужно печатать на экран. Как можно это сделать? Я пытался, код прикладываю. package... подробнее

Показать сообщение отдельно
arvalon
21 / 6 / 2
Регистрация: 26.10.2012
Сообщений: 171
Записей в блоге: 1

Передача HashSet<Object1,List<Object2>> в адаптер BaseExpandableListAdapter для отображения ExpandableListView - Программирование Android

16.07.2016, 16:05. Просмотров 131. Ответов 0
Метки (Все метки)

Доброго дня.
Пишу кастомный адаптер, унаследованный от BaseExpandableListAdapter для заполнения ExpandableListView. В адаптер передаётся коллекция HashSet, ключём в которой является объект. Это не специально, так получилось т.к. я захотел что бы у заголовков групп был не только текст, но и картинка. И простой int или String в качестве ключа уже не подходит. Соответственно получилось:

Адаптер
Кликните здесь для просмотра всего текста

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
public class AddMusclesToExerciseAdapter extends BaseExpandableListAdapter {
 
Context ctx;
Map<MuscleGroup,List<Muscle>> musclesByGroups=new HashMap<>();
 
    public AddMusclesToExerciseAdapter(Context context, Map<MuscleGroup, List<Muscle>> inputMap){
 
        ctx=context;
        musclesByGroups=inputMap;
    }
 
    @Override
    public int getGroupCount() {
        return musclesByGroups.size();
    }
 
    @Override
    public int getChildrenCount(int groupPosition) {
        return 0;
    }
 
    @Override
    public Object getGroup(int groupPosition) {
        return null;
    }
 
    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return null;
    }
 
    @Override
    public long getGroupId(int groupPosition) {
        return 0;
    }
 
    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return 0;
    }
 
    @Override
    public boolean hasStableIds() {
        return false;
    }
 
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        return null;
    }
 
    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        return null;
    }
 
    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }
}


И тут, ещё не добравшись до "сложных" методов getGroupView и getChildView, с которыми ещё придётся повозиться, настал полный ступор. C getGroupCount разобрался, но не понимаю что писать в
  • getChildrenCount
  • getGroup
  • getChild
  • getGroupId
  • getChildId
  • isChildSelectable
Ведь во всех них на вход подаётся int groupPosition!
Кликните здесь для просмотра всего текста

А в некоторых ещё и int childPosition, но с этим по идее понятно. Ведь значениями у ключей моей HashMap является коллекция, реализующая интерфейс List, там "на первый-второй рассчитайся" можно сделать, перечисляемая коллекция.

Но у меня нет номера ключа коллекции HashSet, откуда его взять вообще?

Класс объектов, используемого в качестве ключа - MuscleGroup
Кликните здесь для просмотра всего текста
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
public class MuscleGroup {
    private int id;
    private String name;
    private int power;
    private byte[] img;
    private String description;
 
    public MuscleGroup(int id, String name, int power, byte[] img, String description) {
        this.id = id;
        this.name = name;
        this.power = power;
        this.img = img;
        this.description = description;
    }
 
    public String getDescription() {
        return description;
    }
 
    public void setDescription(String description) {
        this.description = description;
    }
 
    public int getId() {return id;}
 
    public void setId(int id) {
        this.id = id;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public byte[] getImg() {
        return img;
    }
 
    public void setImg(byte[] img) {
        this.img = img;
    }
 
    public int getPower() {
        return power;
    }
 
    public void setPower(int power) {
        this.power = power;
    }
 
    @Override
    public int hashCode(){
        return getId();
    }
 
    @Override
    public boolean equals(Object o) {
        if ((o!=null) && (o instanceof MuscleGroup)) {
            if (this.getId()==((MuscleGroup) o).getId()) return true;
        }
        return false;
    }
}

В принципе в нём есть поле ID - оно 100% уникально т.к. это первичный ключ из БД. Можно использовать его под groupPosition, сделать проброс из класса ключа в адаптер? Что-то говорит что что могут быть проблемы если это хоть как-то заработает вообще. Например если у последовательности в БД, формирующий это ID, будут "дырки" после удаления-добавления записей.

В кратце, как нумеровать ключи в HashSet?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.