gpt4 book ai didi

android - 创建一个从解析的 XML URL 返回结果的异步任务类

转载 作者:行者123 更新时间:2023-11-29 21:40:15 25 4
gpt4 key购买 nike

我在将我的 XML 解析代码转换为异步任务类时遇到了问题,我想知道是否有人可以帮助我举例说明如何将它们组合在一起。我正在使用 Android 谷歌地图演示代码,我想从包含 XML 的 URL 中解析一个值,并在我触摸 map 时显示它。 map 触摸代码如下所示。

@Override
public void onMapClick(LatLng point) {
/*
.......Code......
*/
mTapTextView.setText("tapped, point=" + new AsyncClass().execute(xmlURL));
}

这是从包含 XML 的 URL 解析我想要的值的代码...

double price = 0;

URL xmlContent= new URL("http://www.fueleconomy.gov/ws/rest/fuelprices");
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(new InputSource(xmlContent.openStream()));
NodeList fuel = doc.getElementsByTagName("midgrade");
Element grade = (Element) fuel.item(0);
price = Double.parseDouble(grade.getTextContent());

我希望在异步任务类中返回变量“price”,这样我就可以在这行代码中调用该类,从而返回值并在触摸屏幕时显示它...

mTapTextView.setText("tapped, point=" + new AsyncTaskClass().execute(xmlURL));

如果有人可以展示并解释如何创建执行此类操作的 Async 类,将不胜感激。

最佳答案

异步的意义在于启动它,通常是一些 UI 操作的结果,然后让它在后台运行,最后更新 UI(在 UI 线程上) 完成时。这个

mTapTextView.setText("tapped, point=" + new AsyncClass().execute(xmlURL));

看起来您正在尝试在单击 map 时执行异步任务,并立即返回结果以显示在 mTapTextView 中。尝试这样的事情:

 private class AsyncTaskClass extends AsyncTask<URL, Void, Double> {
protected Double doInBackground(URL... urls) {
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = db.parse(new InputSource(urls[0].openStream()));
NodeList fuel = doc.getElementsByTagName("midgrade");
Element grade = (Element) fuel.item(0);
return Double.parseDouble(grade.getTextContent());
}

protected void onPostExecute(Double price) {
mTapTextView.setText("tapped, point=" + price); // TODO: probably a typo in your string literal?
}
}

然后像这样使用它:

@Override
public void onMapClick(LatLng point) {
/*
.......Code......
*/
URL xmlURL = new URL("http://www.fueleconomy.gov/ws/rest/fuelprices");
new AsyncTaskClass().execute(xmlURL);
}

关于android - 创建一个从解析的 XML URL 返回结果的异步任务类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17353918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com