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

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

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

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

23.07.2013, 21:47. Просмотров 922. Ответов 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
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.07.2013, 21:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Подключение своих классов (Программирование Android):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.07.2013, 21:47
Привет! Вот еще темы с ответами:

Пассивация своих классов - Java
Да, фул. Так этот мой класс (Net) надо Serializable сделать? А как самому, вручную сохранять, что ты упоминал?

Создания массива своих классов с конструкторами - Java SE
Предположим есть класс: public class TestClass { int testValue; public TestClass() { testValue=5; } }

Создание/изменение элементов из своих классов - C#
Здравствуйте. Есть у нас основной класс и пространство имен из Windows Forms (MainForm) - пространство имен - App. + есть свои...

Laravel 5. Каталог для своих файлов и классов - PHP
В какой каталог нужно помещать свои класс или файлы, чтобы их видел весь проект? В проекте используется компонент MultiAuth для работы с...


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

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

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