1

次のクラス(AsyncTask)を使用して、8つの異なるURLから情報を取得しています。取得したデータを8つの要素の配列に格納したいと思います(データを取得するURLごとに1つ)。

 private class getDataClass extends AsyncTask<String, Void, String>{
    protected String doInBackground(String...urls){
        String response = "";
        for(String url : urls){
            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            try{
                HttpResponse execute = client.execute(httpGet);
                InputStream content = execute.getEntity().getContent();

                BufferedReader buffer = new BufferedReader(new InputStreamReader(content));

                String s = "";

                while((s = buffer.readLine()) != null){
                    response += s;
                }
            }catch(Exception e){
                e.printStackTrace();
            } 
        }
        return response;
    }

    protected void onPostExecute(String result){
        Resources.descriptionArray[descriptionArray_Counter] = Html.fromHtml(result).toString();
        descriptionArray_Counter++;
    }

そしてそれをこのように呼びます:

   getDataClass getData = new getDataClass();
   getData.execute(description_links);

私が明らかに得ている問題は、AsyncTaskクラスが単一の「応答」文字列を返すため、すべての情報がarray[0]に格納されることです。

私が知りたいのは、これの例をあまり見つけていないので、これを行うためのよりエレガントな方法と、他のより経験豊富なコーダーがこれをどのように行うかということです。

お時間を割いていただき、誠にありがとうございます。

4

1 に答える 1

1
 as my AsyncTask class returns a single "response" string.

=>それは真実ではありません。AsyncTaskは、文字列以外のArrayListも返すことができるためです。

AsyncTaskのジェネリック型を確認する必要があります

于 2012-04-06T12:24:09.850 に答える