1

動作しないコードがあります!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("&lt;", "<");
                tmp = tmp.replaceAll("&gt;", ">");
                tmp = tmp.replaceAll("&quot;", "" + (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を使用すると、「引用符を返す...」は表示されますが、「アダプタの設定...」は表示されません。ProgressDialogpdは閉じません。

ところで、私の悪い英語でごめんなさい。私はロシア人です。

4

1 に答える 1

4

コンパイラは警告を発しますが、無視することを選択します。

@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注釈に注意してください。このアノテーションを使用すると、エラーが発生しなかった場合にエラーを発生させることで、メソッドを正しくオーバーライドできます。

于 2012-11-17T21:37:21.077 に答える