Форум программистов, компьютерный форум 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
31.08.2016, 11:16  [ТС]     Parser XML + RecyclerView + Fragments
Закоммитил новый проект на gitHub.

С фрагментами тупейшая ошибка не было break; в switch-case.

Категории, сделал проще, отпарсил всё, а потом передавал нужные категории при вызове нужного фрагмента.
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
    private final static String CATEGORY_ID_SALAD = "7";
    private final static String CATEGORY_ID_DESSERT = "10";
    private final static String CATEGORY_ID_PIZZA = "1";
    private final static String CATEGORY_ID_SOUP = "6";
 
  adapter.setListener(new CategoryAdapter.Listener() {
            public void onClick(int position) {
                Fragment fragment;
                FragmentTransaction ft;
                Bundle bundle;
                switch (position) {
                    case 0:
                        fragment = new CategoryListFragment();
                        bundle = new Bundle();
                        bundle.putString("ID", CATEGORY_ID_SALAD);
                        fragment.setArguments(bundle);
                        ft = getFragmentManager().beginTransaction();
                        ft.replace(R.id.content_frame, fragment).addToBackStack(null).commit();
                        break;
                    case 1:
                        fragment = new CategoryListFragment();
                        bundle = new Bundle();
                        bundle.putString("ID", CATEGORY_ID_SOUP);
                        fragment.setArguments(bundle);
                        ft = getFragmentManager().beginTransaction();
                        ft.replace(R.id.content_frame, fragment).addToBackStack(null).commit();
                        break;
                    case 2:
                        fragment = new CategoryListFragment();
                        bundle = new Bundle();
                        bundle.putString("ID", CATEGORY_ID_DESSERT);
                        fragment.setArguments(bundle);
                        ft = getFragmentManager().beginTransaction();
                        ft.replace(R.id.content_frame, fragment).addToBackStack(null).commit();
                        break;
                    case 3:
                        fragment = new CategoryListFragment();
                        bundle = new Bundle();
                        bundle.putString("ID", CATEGORY_ID_PIZZA);
                        fragment.setArguments(bundle);
                        ft = getFragmentManager().beginTransaction();
                        ft.replace(R.id.content_frame, fragment).addToBackStack(null).commit();
                        break;
                    default:
                        break;
                }
            }
        });
v RV сложнее, Сейчас скину. Правильный парсинг. ПРоблемы была при создании и пересоздании элемента. Вот весь парсинг:
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
 public void parse(String xml) {
        String name = "";
        String weight = "";
        String price = "";
        String imageUrl = "";
        String description = "";
        String categoryId = "";
        try {
            XmlPullParser parser = prepareXpp(xml);
            Boolean isSiteMeta = true;
            String tagValue = null;
            int event = parser.getEventType();
            postLists.clear();
            do {
                String tagName = parser.getName();
                switch (event) {
                    case XmlPullParser.START_TAG:
                        if (tagName.equalsIgnoreCase("offer")) {
                            isSiteMeta = false;
                        }
                        break;
                    case XmlPullParser.TEXT:
                        tagValue = parser.getText();
                    default:
                        break;
                    case XmlPullParser.END_TAG:
                        if (!isSiteMeta) {
                            if (tagName.equalsIgnoreCase("name")) {
                                name = tagValue;
                            } else if (tagName.equalsIgnoreCase("picture")) {
                                imageUrl = tagValue;
                            } else if (tagName.equalsIgnoreCase("price")) {
                                price = tagValue;
                            } else if (tagName.equalsIgnoreCase("description")) {
                                description = tagValue;
                            } else if (tagName.equalsIgnoreCase("param")) {
                                if (tagValue != null && tagValue.contains("гр")) {
                                    weight = tagValue;
                                }
                            } else if (tagName.equalsIgnoreCase("categoryId")) {
                                categoryId = tagValue;
                            }
                        }
                        if (tagName.equalsIgnoreCase("offer")) {
                            postLists.add(new PostList(name, weight, price,
                                    imageUrl, description, categoryId));
                            isSiteMeta = true;
                        }
                        break;
                }
                event = parser.next();
            } while (event != XmlPullParser.END_DOCUMENT);
        } 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;
    }
Добавлено через 52 секунды
Ещё подсказали, что парсинг и запросы лучше делать через Retrofit. Планирую заняться этим вопросом в ближ дни
 
Текущее время: 15:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru