我无法理解这段代码。
我是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();
}
}
}
答案 0 :(得分:2)
这段代码基本上是一个AsyncTask - 在后台运行而不是主UI上的线程 - 对urlString变量中定义的url发布/获取请求。
如果请求成功,任务将返回方法onPostCreate中的UI线程,其中包含JSON数据的结果。它解析JSON并通知当前适配器(可能是列表视图)有新的/已更改的数据。
如果不是你的代码,我会建议你自己编写代码,因为有时需要花费更多的时间来理解代码,而不是编写自己的代码。
- 编辑 -
查看示例HERE了解更多有关ASYNC-TASK参数的知识
答案 1 :(得分:0)
当您从网址获取信息时,这里是http调用,它会返回数据,您可以以json或xml的形式读取数据。然后,您需要解析数据。这个json包含字符串“t1”和“t2”。您正在获取这些内容并将其添加到您的allNews列表中。