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

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

Войти
Регистрация
Восстановить пароль
 
Sanu0074
58 / 58 / 2
Регистрация: 14.06.2010
Сообщений: 1,189
Записей в блоге: 5
#1

Подключение своих классов - Программирование Android

23.07.2013, 21:47. Просмотров 885. Ответов 0
Метки нет (Все метки)

Можно ли в проэкте подключать свои классы, и использовать их в текущем классе данного activity? Как это делается?

Например есть класс который получает XML с сервера, как его разбить на части которые изменяются и которые нет. Нужно отделить загрузку xml из указанного адреса, и часть которая занимается разбором сообщения:
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
 class AsyncDownloader extends AsyncTask<Object, String, Integer>{ 
 
        public String TAG="MyLog";
        
        @Override 
        protected Integer doInBackground(Object... params) { 
             
            XmlPullParser recivedData = null; 
            try { 
                recivedData = tryDownloadingXmlData(); 
            } catch (IOException e) { e.printStackTrace();  } 
            int recordsFound = 0; 
            try { 
                recordsFound = tryParsingXmlData(recivedData); 
            } catch (XmlPullParserException e) {  e.printStackTrace(); } 
            catch (IOException e) { e.printStackTrace(); } 
            return recordsFound; 
        } 
          
        private XmlPullParser tryDownloadingXmlData() throws IOException {     
            try{ 
            URL xmlUrl = new URL("http://home-android.ru/android/main"); 
            XmlPullParser recivedData = XmlPullParserFactory.newInstance().newPullParser(); 
            recivedData.setInput(xmlUrl.openStream(),null); 
            
            return recivedData; 
            }  
            catch(XmlPullParserException e){ } 
            catch(IOException e) { } 
            return null; 
        } 
         
         
        private int tryParsingXmlData(XmlPullParser recivedData) throws XmlPullParserException, IOException { 
            if(recivedData != null) 
            { 
                processRecivedData(recivedData); 
            } 
            return 0; 
        } 
 
 
 
        private void processRecivedData(XmlPullParser xmlData) throws XmlPullParserException, IOException { 
            int eventType = -1; 
            int recordsFound = 0; 
             
            String tagName="";
            String imageLnk=""; 
            String name=""; 
            String id = "";
            String type = "";
            String des=""; 
            String cat=""; 
            String cd=""; 
            
            Log.d(TAG, "Старт парсинга XML");
             
            while(eventType!=XmlResourceParser.END_DOCUMENT) 
            { 
                switch(eventType)  
                { 
                    case XmlResourceParser.START_TAG: 
                    tagName=xmlData.getName(); 
                    Log.d(TAG, "START_TAG: name = " + xmlData.getName());     
                    break; 
                    
                    case XmlResourceParser.TEXT:
                        Log.d(TAG, "Text_TAGNAME: <"+tagName+">"+xmlData.getText()+"</"+tagName+">");
                        if(TextUtils.equals(tagName,"name")) {
                                  name = xmlData.getText();
                           }
                        if(TextUtils.equals(tagName,"imageLnk")) {
                                  imageLnk = xmlData.getText();
                           }
                        if(TextUtils.equals(tagName,"id")) {
                            id = xmlData.getText();
                           }
                        if(TextUtils.equals(tagName,"type")) {
                            type = xmlData.getText();
                           }
                        if(TextUtils.equals(tagName,"des")) {
                            des = xmlData.getText();
                           }
                        if(TextUtils.equals(tagName,"cat")) {
                            cat = xmlData.getText();
                           }
                        if(TextUtils.equals(tagName,"cd")) {
                            cd = xmlData.getText();
                           }
                             break;
 
                     case XmlResourceParser.END_TAG:
                          Log.d(TAG, "END_TAG: name = " + xmlData.getName());
                          recordsFound++; 
                          tagName = "";
                          if ("item".equals(xmlData.getName())) {
                                  publishProgress(imageLnk, name, id, type,des,cat,cd);
                          }
                     break;
                
                  default:  break;
                } 
                
                eventType=xmlData.next(); 
                 
                if(recordsFound==0){ 
                    publishProgress(); 
                } 
            } 
             
        } 
 
         
        @Override 
        protected void onPostExecute(Integer result) { 
 
             TextView w = (TextView) findViewById(R.id.wait);
             w.setText(null);
        } 
         
 
        @Override 
        protected void onProgressUpdate(String... values){ 
             
            if(values.length>1) 
            { 
                String imageLnk = values[0]; 
                String name = values[1];
                String id = values[2];
                String type = values[3];
                String des = values[4];
                String cat = values[5];
                String cd = values[6];
                 
                Main.this.rec(imageLnk,name,id,type,des,cat,cd); 
            }
             
            super.onProgressUpdate(values); 
        } 
         
         
    }

tryDownloadingXmlData() должна уметь принимать адрес к скрипту

onProgressUpdate() - мы можем в основном классе изменять полностью, и processRecivedData() тоже может быть везде разная...

Т.е. я хочу максимально сократить в коде процесс парсинга XML, так как есть несколько разных активити которые будут подгружать XML с разных адресов и сообщения будут разные по структуре....
в итоге, в tryDownloadingXmlData() передаем адрес к XML, onProgressUpdate() и processRecivedData() строим в кадом активити индивидуальное, а остальное - остается общее для всех.....

Как это реализовать?

Добавлено через 3 часа 22 минуты
Уже сделал, сам класс абстрактным, а processRecivedData тоже абстрактный. В качестве параметра в AsyncTask передаем строку с адресом, в tryDownloadingXmlData передаем именно эту строку как параметр.
Потом можно создаем дочерний класс от класса AsyncDownloader описывая лишь методы onProgressUpdate и processRecivedData
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2013, 21:47     Подключение своих классов
Посмотрите здесь:

Добавление своих иконок - Программирование Android
Хочу поставить черную иконку. Суть проблемы: Добавляю в папки с размерами иконок свою png-иконку(она черная), а в приложении она все...

Встраивание своих элементов в системные приложения - Программирование Android
Доброго времени. В процессе обдумывания очередного мега популярного проекта возник вопрос: Возможно ли встраивать в активити системных...

Использование известных образов в своих приложениях - Программирование Android
Здравствуйте, у меня возник вот такой вопрос. Предположим, что я написал какую-нибудь игру, например, по вселенной Властелина Колец и...

Кто как проверяет наличие интернета в своих приложениях - Программирование Android
Доброго всем дня! Подскажите, кто как проверяет наличие интернета в своих приложениях? Я проверяю по exception в классической...

Существует ли способ создать(нарисовать) несколько своих слоёв? - Программирование Android
Всем привет! Пытаюсь разобраться в рисовке графики (новичок)! Подскажите, пожалуйста, каким образом можно сделать &quot;наслаивание&quot; View друг...

Где вы берете фоновую музыку для своих приложений? - Программирование Android
Вот и суть, подкиньте сайтики, надеюсь в том разделе.

Google Maps API v2 добавление своих маркеров и фото к ним - Программирование Android
Собственно,как добавлять маркер по нажатию на карту вроде бы разобрался: map.setOnMapClickListener(new OnMapClickListener() { ...

Связи классов - Программирование Android
Здравствуйте, такой вопрос, есть модели описанные через структуры для удобства манипуляций с бд например public static ...

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

Сравнение классов - Программирование Android
Всем привет! Хочу из массива достать элементы определенного класса, но не совсем получается... public abstract class Food { } ...

Наименование классов (GameView) - Программирование Android
интересует, это основной класс во всех приложениях? есть смысл менять название или всегда по умолчанию такое название.. поясните

Аналог классов css в xml - Программирование Android
Я делаю темы. И дело в том, что например не для всех TextView подходит один и тот же цвет. В CSS бы я просто установил классы для этих вью...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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