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

Передача 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:layout_height="match_parent" android:layout_weight="1"> <LinearLayout android:id="@+id/inear" android:layout_width="match_parent"
Android Загрузка текста с сайта Проблема такая - научился получать данные с сайта, но они в приходят в виде входного потока байт (InputStream). Как можно выделить только интересующие меня поля? То есть например на сайте есть поле с текстом и мне нужно вывести из всего потока только этот текст, остальные символы не нужны. Вот мой код: import android.os.Bundle; import android.app.Fragment; import android.view.LayoutInflater;... 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); b.putString("KEY3", image); msg.setData(b); h.addto(msg); h.sendMessage(msg); так я отправляю сообщение через...
Получить очередь сообщений Handler Android
Сообщение отправляется таким способом Message msg = h.obtainMessage(); Bundle b = new Bundle(); b.putString("KEY1", ParseQuery); b.putString("KEY3", image); msg.setData(b); h.sendMessage(msg); Я хочу вызвать hasMessages, то есть проверить если в очереди есть сообщения то вызвать handleMessage, но проблема в том что...
Android Получение данных из cursor http://www.cyberforum.ru/android-dev/thread1781185.html
У меня огромный вопрос по работе с SQLite, а именно Cursor. В общем то при запросе к бд все норм, при создании класса бд все норм, везде все норм, но один лишь курсор, из за которого у меня горит уже не первый день, не работает. Сразу даю код ошибок 07-15 19:27:12.688: E/AndroidRuntime(20791): FATAL EXCEPTION: AsyncTask #2 07-15 19:27:12.688: E/AndroidRuntime(20791):...
Android Android arrayList У меня есть два активити, в одном получаю значения и записываю их в ArrayList, а в другом мне их нужно печатать на экран. Как можно это сделать? Я пытался, код прикладываю. package com.example.first.programprice; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import... подробнее

Показать сообщение отдельно
arvalon
 Аватар для arvalon
15 / 0 / 0
Регистрация: 26.10.2012
Сообщений: 86

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

16.07.2016, 16:05. Просмотров 98. Ответов 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?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru