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

Parser XML + RecyclerView + Fragments - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android WebView - не открывается FilePicker по нажатию кнопки http://www.cyberforum.ru/android-dev/thread1799775.html
Всем доброго времени суток. Делаю аппликацию-оболочку для одного сайта. Сделал все как доктор прописал, благо в сети информации полно. Проверил на своем мобильнике, приложение устанавливается, работает, отображает сайт, даже умеет поворачиваться вместе с мобильником. Все ссылки ведут себя как надо, я их фильтрую, релевантные отображаем в моем приложении, нерелевантные - во внешнем(дефолтном)...
Android Parse XML как отфильтровать? Есть парсинг с http://ufa.farfor.ru/getyml/?key=ukAXxeJYZN Как мне сделать, чтобы выборка была например только по 1 категории? public void parse(String xml) { try { XmlPullParser xpp = prepareXpp(xml); Boolean isSiteMeta = true; String tagValue = null; postLists.clear(); http://www.cyberforum.ru/android-dev/thread1799758.html
Android Picasso
Здравствуйте, уважаемые участники форума! Снова я со своим Picasso! Итак, на этот раз у меня вот что. Я должен загрузить из интернета картинку. Вот код picasso: Picasso.with(context) ...
Передача данных из activity в service Android
Здравствуйте, как можно организовать передачу данных из activity в сервис, если сервис уже запущен и работает. как он должен отлавливать сообщения
Android Узнать используется (записывается) файл или нет http://www.cyberforum.ru/android-dev/thread1799733.html
В приложении 1н broadcast receiver записывает файл, 2й broadcast receiver загружает на сервер, ресиверы друг с другом не общаются. Но если файл еще записываться (диктофон) то 2й broadcast receiver может его отправить и файл отправиться не целым. Как узнать записываем мы данные в этот файл или нет? Или нет такой ф-и?
Android Почему не пересоздаётся сокет? Почему не пересоздаётся сокет при том что я его заранее полностью освобождаю, если он естественно создан? if(socket!= null){ socket.close(); socket.shutdownInput(); socket.shutdownOutput(); socket=null; } подробнее

Показать сообщение отдельно
PhantomR
5 / 5 / 0
Регистрация: 04.02.2016
Сообщений: 74
30.08.2016, 14:52  [ТС]     Parser XML + RecyclerView + Fragments
Хм. Если вы смотрели проект. То там готово 8-9 их 10. Есть нерешенные вопросы, я ищу ответы и так. Но может и здесь кто, что подскажет.

Добавлено через 21 час 54 минуты
Итак. Вопрос по фрагментам решен. Там глупая ошибка.

По RV. Выяснил что приходит список из нужного размера, но с одинаковыми элементами. Почему-то во время парсинга парсит разные значения, но добавляет в итоге одинаковое последнее. Это странно. Разбираюсь.

Может кто глянет?

А может это связано и с ошибкой PARSER'а, т.к. в прошлый раз им парсил <item> и всё было ок, а сейчас тег <offer id ="222">, а не просто <offer>. И выдает Exception name expected position:START_TAG <n.length

По категориям разбивку потом сделаю. Думаю передачей интентом после парсинг нужной категории в нужный список.

Жду ответа по одинаковым элементам. Закоммитил новую версию.

Добавлено через 1 минуту
Код парсера:
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
    public void parse(String xml) {
        try {
            XmlPullParser parser = prepareXpp(xml);
            Boolean isSiteMeta = true;
            String tagValue = null;
            postLists.clear();
            PostList posts = new PostList();
            while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
                switch (parser.getEventType()) {
                    case XmlPullParser.START_TAG:
                        if (parser.getName().equalsIgnoreCase("offer")) {
                            isSiteMeta = false;
                        }
                        break;
                    case XmlPullParser.TEXT:
                        tagValue = parser.getText();
                    default:
                        break;
                    case XmlPullParser.END_TAG:
                        if (!isSiteMeta) {
                            if (parser.getName().equalsIgnoreCase("name")) {
                                posts.setName(tagValue);
                            } else if (parser.getName().equalsIgnoreCase("picture")) {
                                posts.setImageUrl(tagValue);
                            } else if (parser.getName().equalsIgnoreCase("price")) {
                                posts.setPrice(tagValue);
                            } else if (parser.getName().equalsIgnoreCase("description")) {
                                Log.d(TAG, "parse: " + tagValue);
                                posts.setDescription(tagValue);
                            } else if (parser.getName().equalsIgnoreCase("param")) {
                                if (tagValue != null && tagValue.contains("гр")) {
                                    posts.setWeight(tagValue);
                                }
                            } else if (parser.getName().equalsIgnoreCase("categoryId")) {
                                posts.setDescription(tagValue);
                            }
                        }
                        if (parser.getName().equalsIgnoreCase("offer")) {
                            postLists.add(posts);
//                            Log.d(TAG, "parse: " + postLists.size());
//                            Log.d(TAG, "parse: " + postLists.get(0));
//                            Log.d(TAG, "parse: " + postLists.get(1));
                            isSiteMeta = true;
                        }
                        break;
                }
                parser.next();
            }
        } catch (Exception e) {
            Log.d(TAG, "Exception: " + e.toString());
        }
    }
 
    private XmlPullParser prepareXpp(String rss) throws XmlPullParserException {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser parser = factory.newPullParser();
        parser.setInput(new StringReader(rss));
        return parser;
    }
Добавлено через 5 часов 28 минут
Тема закрыта. Все вопросы решены!
 
Текущее время: 14:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru