Pengaturan

Gambar

Lainnya

Tentang KASKUS

Pusat Bantuan

Hubungi Kami

KASKUS Plus

© 2024 KASKUS, PT Darta Media Indonesia. All rights reserved

reccountmeAvatar border
TS
reccountme
[ask] mengembalikan nilai array hasil dari xml parser android ?
Programmer android mohon bantuannya

saya mencoba mengambil data xml dari api yang kemudian data tersebut saya tampung di array.. saya mencoba menggunakan xmlpullparser android dan asynctask, akan tetapi permasalahan terletak pada pengembalian nilainya dalam bentuk array. berikut code saya

Code:

package com.example.sigit.testxml;

import android.util.Log;
import android.util.Xml;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

/**
* Created by sigit on 06/02/16.
*/
public class GambarXmlParser {
private static final String ns = null;

public List<Entry> parse(InputStream in) throws XmlPullParserException, IOException {
try {
XmlPullParser parser = Xml.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(in, null);
parser.nextTag();
return readFeed(parser);
} finally {
in.close();
}
}

private List<Entry> readFeed(XmlPullParser parser) throws XmlPullParserException, IOException {
List<Entry> entries = new ArrayList<Entry>();
parser.require(XmlPullParser.START_TAG, ns, "gambar");
String link = null;
while (parser.next() != XmlPullParser.END_TAG) {
if (parser.getEventType() != XmlPullParser.START_TAG) {
continue;
}
String name = parser.getName();
if (name.equals("link")) {
link = readLink(parser);
Log.d("parser --> ",link);
entries.add(new Entry(link));
} else {
skip(parser);
}
}
return entries;
}

public static class Entry {
public final String url;
private Entry(String url) {
this.url = url;
}
}

// Processes link tags in the feed.
private String readLink(XmlPullParser parser) throws IOException, XmlPullParserException {

parser.require(XmlPullParser.START_TAG, ns, "link");
String link = readText(parser);
parser.require(XmlPullParser.END_TAG, ns, "link");
return link;
}

// For the tags title and summary, extracts their text values.
private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
String result = "";
if (parser.next() == XmlPullParser.TEXT) {
result = parser.getText();
parser.nextTag();
}
return result;
}

// Skips tags the parser isn't interested in. Uses depth to handle nested tags. i.e.,
// if the next tag after a START_TAG isn't a matching END_TAG, it keeps going until it
// finds the matching END_TAG (as indicated by the value of "depth" being 0).
private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
if (parser.getEventType() != XmlPullParser.START_TAG) {
throw new IllegalStateException();
}
int depth = 1;
while (depth != 0) {
switch (parser.next()) {
case XmlPullParser.END_TAG:
depth--;
break;
case XmlPullParser.START_TAG:
depth++;
break;
}
}
}
}



Kemudian mainactivity saya sebagai berikut

Code:
package com.example.sigit.testxml;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.os.AsyncTask;

import android.util.Log;
import android.webkit.WebView;
import android.widget.Toast;

import com.example.sigit.testxml.GambarXmlParser.Entry;
import com.example.sigit.testxml.R;

import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
public class MainActivity extends AppCompatActivity {
public String hasilku="aaa";
private static final String URL =
"http://192.168.100.55/android/test.xml";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public void onStart() {
super.onStart();
loadPage();
setContentView(R.layout.activity_main);
Toast.makeText(getApplicationContext(), hasilku,
Toast.LENGTH_LONG).show();
}
private void loadPage() {
new DownloadXmlTask().execute(URL);
}

private class DownloadXmlTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
try {
return loadXmlFromNetwork(urls[0]);
} catch (IOException e) {
return getResources().getString(R.string.connection_error);
} catch (XmlPullParserException e) {
return getResources().getString(R.string.xml_error);
}
}
@Override
protected void onPostExecute(String result) {
Log.d("result --> ", result);
String[] tokens = result.split(",", -1);
hasilku = tokens[0]; // disini permasalahan nya muncul
Log.d("array --> ", tokens[1]);
}
}


private String loadXmlFromNetwork(String urlString) throws XmlPullParserException, IOException {
InputStream stream = null;
GambarXmlParser rssXmlParser = new GambarXmlParser();
List<Entry> entries = null;
String url = null;
String mylist= "";
try {
stream = downloadUrl(urlString);
entries = rssXmlParser.parse(stream);
} finally {
if (stream != null) {
stream.close();
}
}
int i=0;
for (Entry entry : entries) {

mylist += entry.url+" , ";
i++;
}
return mylist;
}
private InputStream downloadUrl(String urlString) throws IOException {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("GET");
conn.setDoInput(true);
// Starts the query
conn.connect();
InputStream stream = conn.getInputStream();
return stream;
}
// Displays an error if the app is unable to load content.

}


permasalahan muncul di asynctask. bagaimana mengembalikan result dari onPostExecute ??

protected void onPostExecute(String result) {
Log.d("result --> ", result);
String[] tokens = result.split(",", -1);
hasilku = tokens[0]; // disini permasalahan nya muncul
Log.d("array --> ", tokens[1]);
}

mohon bantuannya emoticon-Bingung (S)
Diubah oleh reccountme 06-02-2016 06:47
0
966
3
GuestAvatar border
Komentar yang asik ya
Mari bergabung, dapatkan informasi dan teman baru!
Programmer Forum
Programmer ForumKASKUS Official
20.2KThread4.4KAnggota
Urutkan
Terlama
GuestAvatar border
Komentar yang asik ya
Ikuti KASKUS di
© 2023 KASKUS, PT Darta Media Indonesia. All rights reserved.