0

我面临一个代码问题,我必须从restservices检索数据并将其显示在listview中......

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)) 时能够读取相同的内容...它将空值传递给参数以进行插入..

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);

onPostExecute在您的中执行与 UI 相关的任务AsyncTask

于 2012-12-07T06:37:47.610 回答