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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Поддержа 1080x1920 http://www.cyberforum.ru/android-dev/thread927674.html
Как можно создать виртуальное устройство в Eclipse с разрешением 1080x1920?
Программирование Android Записать текст в файл Есть такой код: String fileName = edFileName.getText().toString (); //здесь я из поля получаю имя файла try { OutputStream outputstream = openFileOutput (fileName, 0); ... http://www.cyberforum.ru/android-dev/thread927649.html
Программирование Android Использование библиотеки 47deg/android-swipelistview
Добрый день. В своем проекте хочу использовать библиотеку android-swipelistview притягиваю ее с гитхаба а тама все в ерорах... Если кто то когда то ее использовал скажите как грамотно ее притянуть и...
Проверка internet connection. Проверка доступности сети Программирование Android
Добрый день. Для проверки Internet Connection советуют делать что-то вроде: private boolean haveNetworkConnection() { boolean haveConnectedWifi = false; boolean haveConnectedMobile =...
Программирование Android как найти решении следующей ошибки? http://www.cyberforum.ru/android-dev/thread927560.html
Необходима ваша помощь в устранении ошибки. Что за она, я так не понял. import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import...
Программирование Android AsyncTask и Jsoup Не работает вот такой код: package com.example.projecta; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import android.app.Activity; import android.os.AsyncTask; import... подробнее

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

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

23.07.2013, 21:47. Просмотров 933. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru