Java AsyncTask不返回树映射
我有一个不起作用的代码! AsyncTask需要返回一个TreeMapJava AsyncTask不返回树映射,java,android,android-asynctask,treemap,Java,Android,Android Asynctask,Treemap,我有一个不起作用的代码! AsyncTask需要返回一个TreeMap但是通过我的日志记录我发现它没有返回。真是太糟糕了 代码如下: private class ParseSite extends AsyncTask<String, Void, Map<Integer,List<String>>> { Map<Integer,List<String>> quotes; 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注释。使用此注释将确保您正确地重写方法,如果您没有这样做,则会给出一个错误。编译器会警告您,但您选择忽略它:
@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注释。如果没有,使用此注释将通过给出错误来确保正确地重写方法。AsyncTask的返回类型是Map,但为onPostExecute声明的参数是List output。正如Niek所说-编译器警告您onPostExecute。。。方法没有使用,因为它没有正确的参数类型。AsyncTask的返回类型是Map,但为onPostExecute声明的参数是List output。正如Niek所说-编译器警告您onPostExecute。。。方法没有使用,因为它没有正确的参数类型。OMG它可以工作!非常感谢你!我花了将近3个小时试图找出问题所在!我想知道为什么编译器说这个方法没有使用。再次感谢您不客气:所以请始终将@Override注释添加到您要重写的方法中,以确保您的方法被调用。另外,如果你能接受这个答案,那就太好了:天哪,它真管用!非常感谢你!我花了将近3个小时试图找出问题所在!我想知道为什么编译器说这个方法没有使用。再次感谢您不客气:所以请始终将@Override注释添加到您要重写的方法中,以确保您的方法被调用。另外,如果你能接受答案,那就太好了: