0

レストサービスからデータを取得してリストビューに表示する必要があるコードで問題が発生しています。

private class surveyCheck extends AsyncTask<String, Integer,List<SurveyMetaData>> {

protected List<SurveyMetaData> doInBackground(String... params)  {

        if (mdebug_flag) {
            Log.i(TAG_DEBUG, "SurveyCheck:doInBackground");
        }
        String url = params[0];
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpGet request = new HttpGet(url);

        try {

            request.setHeader("Accept", "application/json");
            request.setHeader("Content-type", "application/json");
            HttpResponse response = httpClient.execute(request);
            final int statusCode =    response.getStatusLine().getStatusCode();

            if (statusCode != HttpStatus.SC_OK) {
                Log.w(getClass().getSimpleName(), "Error " + statusCode
                        + " for URL " + url);
                return null;
            }
            HttpEntity responseEntity = response.getEntity();

            InputStream stream = responseEntity.getContent();
        InputStreamReader reader = new InputStreamReader(stream);

          Gson gson=new Gson();

          Type collectionType=new TypeToken<List<SurveyMetaData>>(){}.getType();
          List<SurveyMetaData> result =gson.fromJson(reader,collectionType);
          for( SurveyMetaData element : result)
          {
              Log.d("TAG","I 'm doing stuff with: " + element);

          }
          Survey_DB dataobj = new Survey_DB(getApplicationContext());       
            for (int i = 0; i <result.size() ; i++) {
                if (dataobj.AddSurvey(result.get(i)) != -1)
                    ToastUtils.displayToast(Available_Surveys.this,
                            "Survey Inserted successfully",
                            (ViewGroup) findViewById(R.id.llRoot));
            }

            Survey_Adapter adapter = new Survey_Adapter(
                    getApplicationContext(), R.layout.list_item_menu,
                    result);
            listView1 = (ListView) findViewById(R.id.listview_surveys);
            listView1.setAdapter(adapter);
            // Populate text field                       return result;



        } catch (IOException e) {
            request.abort();
            Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
            return null;
        }

    }

コードはストリームを受信して​​おり、リーダーはそれをAddSurvey(result.get(i))に追加している間、同じものを読み取ることができます...挿入する引数にnull値を渡します。

4

1 に答える 1

0

UI tasksバックグラウンドスレッドから実行しています。

お気に入り

ToastUtils.displayToast(Available_Surveys.this,
                        "Survey Inserted successfully",
                        (ViewGroup) findViewById(R.id.llRoot));

Survey_Adapter adapter = new Survey_Adapter(
                getApplicationContext(), R.layout.list_item_menu,
                result);
        listView1 = (ListView) findViewById(R.id.listview_surveys);
        listView1.setAdapter(adapter);

で UI 関連のタスクを実行しonPostExecuteます。AsyncTask

于 2012-12-07T06:37:47.610 に答える