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

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

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

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

18.04.2016, 21:07. Просмотров 153. Ответов 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 (Программирование Android):

SharedPreferences, HashMap - Программирование Android
Хочу сделать Save , Load в sharedPreferences и вывести результат в Log. не вижу ошибки :wall: Спасибо. public class...

Заполнение ListView из HashMap - Программирование Android
Добрый день. Столкнулся с некоторой проблемой при наполнении ListView с помощью HashMap. Проблема вот в чем, заполняю HashMap с помощью...

Hashmap вывод в адаптер - Программирование Android
Здравствуйте.Имеется проблема сделал приложение которое парсит данные с сайта и добавляет в listview делал он так znak_z.setAdapter((new...

Вытащить из HashSet объект HashMap - Программирование Android
В первую очередь хочу высказать недоумение касаемо того, зачем разработчики системы в качестве массивов в Shared Preference выбрали столько...

Как рандомно получить значение из hashmap'a через ключ - Программирование Android
Предположим у меня есть два ImageButton'a, Hashmap и картинки, помещенные в этот hashmap. Мне нужно используя randomizer рандомно...

При скролинге листвью, картинки пропадают - Программирование Android
День добрый. Использую свой кастом адаптер для листвью(см. приложение). При скролинге листвью, картинки пропадают(те которые ушли за...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 51
21.04.2016, 09:42 #2
Вот этот кусок кода:
Java
1
2
listModel.add(list);
list.clear();
Мне кажется что list.clear(); лишнее. В listModel добавляется только ссылка на объект, а получается что сам объект ты затираешь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2016, 09:42
Привет! Вот еще темы с ответами:

После поворота экрана view формы пропадают - Программирование Android
на главной активити в xml создано RadioGroup. на главной активити в методе onCreate есть такая строчка rGroup = (RadioGroup)...

Вставка HashMap в HashMap меняет все элементы - Java SE
Вставляю HashMap в HashMap генерируя карту доски для шахмат, привожу тестовый пример, вставляется только данные последней ячейки доски, с...

Считать данные в HashMap, которые записаны попарно на строку - Java SE
Всем доброго времени суток! Возник такой вопрос: Есть текстовый файл,в котором записаны данные в виде &quot;тег&quot; и числовое...

Пропадают данные - SQL Server
Теряются (периодически) данные на SOL SERVER примерно 5-15 записей в начале и в конце.В ручную уже достало.Мат обеспечение на FoxPro


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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