如何使用JSON将数据解析到android应用程序中

时间:2014-04-06 13:13:17

标签: android json

我无法理解这段代码。

我是android和java的初学者。

如何工作 doInBackground(Void ... params) onPostExecute(字符串结果)

如何从MainAcitivity传递此方法的值。

请帮助我。谢谢

class DownloadTask extends AsyncTask<Void, Void, String>{

        @Override
        protected String doInBackground(Void... params) {

          String result=null;

          try {
              HttpClient client=new DefaultHttpClient();
          HttpGet get=new HttpGet(urlString);
          HttpResponse response=client.execute(get);

          if(response.getStatusLine().getStatusCode()==HttpStatus.SC_OK){

              InputStream in=response.getEntity().getContent();
              BufferedReader reader=new BufferedReader(new InputStreamReader(in));
              String line=reader.readLine();
              Log.v(getClass().getSimpleName(), line);

             return line; 
          }


        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }   

            return result;
        }

        @Override
        protected void onPostExecute(String result) {

            progressDialog.dismiss();

            try {

                JSONArray array=new JSONArray(result);
                for (int i = 0; i < result.length(); i++) {
                    JSONObject object=array.getJSONObject(i);
                    String team1=object.getString("t1");
                    String team2=object.getString("t2");
                    allNews.add(team1 + "Vs" + team2);

                    adapter.notifyDataSetChanged();
                }


            } catch (Exception e) {
                e.printStackTrace();
            }


        }



    }

2 个答案:

答案 0 :(得分:2)

这段代码基本上是一个AsyncTask - 在后台运行而不是主UI上的线程 - 对urlString变量中定义的url发布/获取请求。

如果请求成功,任务将返回方法onPostCreate中的UI线程,其中包含JSON数据的结果。它解析JSON并通知当前适配器(可能是列表视图)有新的/已更改的数据。

如果不是你的代码,我会建议你自己编写代码,因为有时需要花费更多的时间来理解代码,而不是编写自己的代码。

- 编辑 -

查看示例HERE了解更多有关ASYNC-TASK参数的知识

答案 1 :(得分:0)

当您从网址获取信息时,这里是http调用,它会返回数据,您可以以json或xml的形式读取数据。然后,您需要解析数据。这个json包含字符串“t1”和“t2”。您正在获取这些内容并将其添加到您的allNews列表中。