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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
samuliak
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 25
#1

Пропадают данные из HashMap - Android

18.04.2016, 21:07. Просмотров 136. Ответов 1
Метки нет (Все метки)

Задание такое: парсим данные и закидываем их в HashMap. При записи они есть, но при чтении их нет! Что делать, помогите пожалуйста! Буду благодарен за любую подсказку! Код, где мы записываем данные в коллекцию:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 private void addModelToList(ReplaceModel model, List<ReplaceModel> list) {
        list.add(model);
        Log.e("samuliak", "list.get(0).getGroup: "+list.get(0).getGroup());
        Log.e("samuliak", "model: : "+model.toString());
        if (!listOfObj.containsKey(list.get(0).getGroup()))
            listOfObj.put(list.get(0).getGroup(), list);
        else {
 
            List<ReplaceModel> rm = listOfObj.get(list.get(0).getGroup())
                    .subList(0, listOfObj.get(list.get(0).getGroup()).size());
            Log.e("samuliak", "rm.size(): : "+rm.size());
            for (ReplaceModel r : rm)
                list.add(r);
            listOfObj.put(list.get(0).getGroup(), list);
        }
        listModel.add(list);
        list.clear();
        Log.e("samuliak", "listofObj.size(): : "+listOfObj.size());
        Log.e("samuliak", "listofObj.values().size: : "+listOfObj.values().size());
    }
А вот код где мы считываем из него данные:
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
private void initCardViewInfo() {
        GridLayout gridLayout = (GridLayout) findViewById(R.id.gridGroup);
        assert gridLayout != null;
        gridLayout.removeAllViews();
        Button btnGroup;
        int typeSize = display.getHeight()/135;
        int total = listGroup.size();
        int column = 4;
        int row = total / column;
        gridLayout.setColumnCount(column);
        gridLayout.setRowCount(row + 1);
 
        for(int i = 0, c = 0, r = 0; i < total; i++,c++){
            if(c == column) {
                c = 0;
                r++;
            }
            GridLayout.LayoutParams param = new GridLayout.LayoutParams();
            param.height = display.getHeight() / 15;
            param.width = display.getWidth() / (column+2);
            param.rightMargin = 5;
            if (c == 0){
                param.leftMargin = display.getWidth() / (column+4);
            }
            if (c+1 == column){
                param.rightMargin = display.getWidth() / (column+4);
            }
            param.setGravity(Gravity.CENTER_HORIZONTAL);
            param.columnSpec = GridLayout.spec(c);
            param.rowSpec = GridLayout.spec(r);
 
            btnGroup = new Button(this);
            btnGroup.setText(listGroup.get(i));
            btnGroup.setTextSize(typeSize);
            btnGroup.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
            btnGroup.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.e("samuliak", "Click is OK");
                    //CardView cardReplace = (CardView) findViewById(R.id.cardReplace);
                    //assert cardReplace != null;
                    //cardReplace.setVisibility(View.VISIBLE);
                    LinearLayout linearReplace = (LinearLayout) findViewById(R.id.linearReplace);
                    for (List<ReplaceModel> list : listModel) {
                        Log.e("samuliak", "list size: "+list.size());
                        for (ReplaceModel m : list) {
                            Log.e("samuliak", "ReplaceModel m: " + m.toString());
                            if (((Button) v).getText() == m.getGroup()) {
                                Log.e("samuliak", "Find getText: " + m.getGroup());
                                int typeSize = display.getHeight() / 135;
                                ViewGroup.LayoutParams param = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                                        ViewGroup.LayoutParams.WRAP_CONTENT);
                                param.height = display.getHeight() / 15;
                                param.width = display.getWidth() / 6;
                                TextView tv = (TextView) findViewById(R.id.proverka);
                                tv.setText("Text from code");
//                                TextView tv = new TextView(v.getContext());
//                                tv.setText(m.toString());
//                                tv.setTextSize(typeSize);
                                //tv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
                                Log.e("samuliak", "tv.toString(): " + tv.toString());
                                assert linearReplace != null;
//                                linearReplace.addView(tv);
                            }
                        }
                    }
                }
            });
            btnGroup.setLayoutParams(param);
            gridLayout.addView(btnGroup);
Логика такая: во внутреннем классе мы парсим данные и помещаем их в коллекцию, в основном классе мы добавляем на кнопки слушатели, при которых выводим нужную нам информацию из этой же коллекции. А в итоге у неё есть объекты (в нашем случаи это список объектов), но они пустые. Проверил при добавлении, все есть, добавляет, но почему то они затираются (
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2016, 21:07     Пропадают данные из HashMap
Посмотрите здесь:

Заполнение ListView из HashMap Android
Android Hashmap вывод в адаптер
При скролинге листвью, картинки пропадают Android
После поворота экрана view формы пропадают Android
Вытащить из HashSet объект HashMap Android
Как рандомно получить значение из hashmap'a через ключ Android
Android SharedPreferences, HashMap

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 50
21.04.2016, 09:42     Пропадают данные из HashMap #2
Вот этот кусок кода:
Java
1
2
listModel.add(list);
list.clear();
Мне кажется что list.clear(); лишнее. В listModel добавляется только ссылка на объект, а получается что сам объект ты затираешь
Yandex
Объявления
21.04.2016, 09:42     Пропадают данные из HashMap
Ответ Создать тему
Опции темы

Текущее время: 08:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru