[英]AsyncTask does not return a TreeMap
我有一個代碼,只是不工作! AsyncTask需要返回一個TreeMap <Integer,List <String >>,但是通過我的日志記錄,我發現它沒有。 它只是卡住了!
這是代碼:
private class ParseSite extends
AsyncTask<String, Void, Map<Integer,List<String>>> {
Map<Integer,List<String>> quotes;
List<String> tmpInfo;
List<String> tmpText;
@Override
protected Map<Integer,List<String>> doInBackground(String... arg) {
// List<String> output = new ArrayList<String>();
quotes = new TreeMap<Integer,List<String>>();
try {
HTMLHelper hh = new HTMLHelper(new URL(arg[0]));
List<TagNode> qText = hh.getContentByClass("content");
Logger.l(Logger.TAG_DBG, "GOT qText");
List<TagNode> qInfo = hh.getContentByClass("sm");
Logger.l(Logger.TAG_DBG, "GOT qInfo");
tmpInfo = new ArrayList<String>();
tmpText = new ArrayList<String>();
for (Iterator<TagNode> iterator = qText.iterator(); iterator
.hasNext();) {
TagNode divElement = iterator.next();
String tmp = divElement.getText().toString();
tmp = tmp.replaceAll("<", "<");
tmp = tmp.replaceAll(">", ">");
tmp = tmp.replaceAll(""", "" + (char) 34);
tmpText.add(tmp);
Log.i(Logger.TAG_INF, tmp);
}
Logger.l(Logger.TAG_DBG, "tmpText[" + tmpText.size() + "] Filled");
quotes.put(1, tmpText);
for (Iterator<TagNode> iterator = qInfo.iterator(); iterator
.hasNext();) {
TagNode divElement = iterator.next();
String tmp = divElement.getText().toString();
tmpInfo.add(tmp);
Log.i(Logger.TAG_INF, tmp);
}
Logger.l(Logger.TAG_DBG, "tmpInfo[" + tmpInfo.size() + "] Filled ");
quotes.put(2, tmpInfo);
Logger.l(Logger.TAG_DBG, "quotes Filled");
} catch (Exception e) {
e.printStackTrace();
}
Logger.l(Logger.TAG_DBG, "Returning quotes...");
return quotes;
}
@SuppressWarnings("unused")
protected void onPostExecute(List<String> output) {
pd.dismiss();
Logger.l(Logger.TAG_DBG, "Setting adapter...");
listView.setAdapter(new QuotesArrayAdapter(HTMLParser.this,
quotes));
}
}
通過logcat的,我可以看到我的“回歸行情......”,但我不能看到“設置適配器...”和ProgressDialog PD並沒有消除。
對不起,我的英語不好。 我是俄國人。
編譯器警告你,但你選擇忽略它:
@SuppressWarnings("unused")
編譯器知道這個方法從未使用過,因為你聲明它是錯誤的。 將其更改為:
@Override
protected void onPostExecute(Map<Integer,List<String>> output) {
pd.dismiss();
Logger.l(Logger.TAG_DBG, "Setting adapter...");
listView.setAdapter(new QuotesArrayAdapter(HTMLParser.this,
quotes));
}
注意參數的類型和@Override
注釋。 如果不這樣做,使用此注釋將確保通過提供錯誤來正確覆蓋方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.