Загрузка XML с сервера, разбор и вставка в TextView
Добавлено: 12 июл 2013, 11:39
Приложение выполняется без ошибок, но результат не вставляется в TextView
Вызов XML-загрузчика:
Функция которая записывает результат, находится в классе Main:
Парсер XML:
Вызов XML-загрузчика:
Код: Выделить всё
AsyncDownloader downloader = new AsyncDownloader();
downloader.execute();
Код: Выделить всё
public void rec(String data)
{
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(data);
}
Код: Выделить всё
class AsyncDownloader extends AsyncTask<Object, String, Integer>{
@Override
protected Integer doInBackground(Object... params) {
XmlPullParser recivedData = null;
try {
recivedData = tryDownloadingXmlData();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int recordsFound = 0;
try {
recordsFound = tryParsingXmlData(recivedData);
} catch (XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
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 lnk="";
String data="";
while(eventType!=XmlResourceParser.END_DOCUMENT)
{
String tagName=xmlData.getName();
switch(eventType)
{
case XmlResourceParser.START_TAG:
if(tagName.equals("lnk"))
{
data+=xmlData.getText();
}
break;
case XmlResourceParser.TEXT:
data+=xmlData.getText();
break;
case XmlResourceParser.END_TAG:
if(tagName.equals("lnk"))
{
recordsFound++;
publishProgress(lnk,data);
}
break;
}
eventType=xmlData.next();
if(recordsFound==0){
publishProgress();
}
}
}
protected void onProgessUpdate(String... values){
if(values.length==2)
{
String data = values[0];
String lnk = values[1];
Main main = new Main();
main.rec(data+lnk);
}
super.onProgressUpdate(values);
}
}