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

标签 android xml-parsing android-asynctask

我在将我的 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/

相关文章:

Android Facebook SDK 解析JSON

java - 从 XML 文件中检索两条数据的最佳方法是什么?

android - ListView 的多线程使错误的项目/根本没有项目出现

php - 将字符串数据发送到服务器 : string is not sent? 上的 PHP 文件

java - 具有异步数据加载的 Adview (admob)

android - 如何使用 Google Play 服务 API 客户端进行 Activity 识别

swift - 使用 SwiftyXMLParser Alamofire 解析 XML

android - 无法使用本地主机将数据从应用程序传输到mysql

android - 要求用户在 IONIC 3 应用程序中激活地理定位

asp.net - XML 包中的 Google 跟踪代码管理器脚本解析错误