android根据url压缩展示,从Android上的URL简单解析JSON并在listview中显示

您可以使用AsyncTask,您必须自定义以满足您的需求,但类似于以下内容

异步任务有三种主要方法:onPreExecute() - 最常用于设置和启动进度对话框

doInBackground() - 建立连接并从服务器接收响应(不要尝试将响应值分配给GUI元素,这是一个常见错误,无法在后台线程中完成)。

onPostExecute() - 这里我们不在后台线程中,因此我们可以使用响应数据进行用户界面操作,或者只是将响应分配给特定的变量类型。

首先,我们将启动该类,初始化a String以将结果保存在方法之外但在类中,然后运行onPreExecute()方法设置一个简单的进度对话框。class MyAsyncTask extends AsyncTask {

private ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);

InputStream inputStream = null;

String result = "";

protected void onPreExecute() {

progressDialog.setMessage("Downloading your data...");

progressDialog.show();

progressDialog.setOnCancelListener(new OnCancelListener() {

public void onCancel(DialogInterface arg0) {

MyAsyncTask.this.cancel(true);

}

});

}

然后我们需要建立连接以及我们如何处理响应:@Override

protected Void doInBackground(String... params) {

String url_select = "http://yoururlhere.com";

ArrayList param = new ArrayList();

try {

// Set up HTTP post

// HttpClient is more then less deprecated. Need to change to URLConnection

HttpClient httpClient = new DefaultHttpClient();

HttpPost httpPost = new HttpPost(url_select);

httpPost.setEntity(new UrlEncodedFormEntity(param));

HttpResponse httpResponse = httpClient.execute(httpPost);

HttpEntity httpEntity = httpResponse.getEntity();

// Read content & Log

inputStream = httpEntity.getContent();

} catch (UnsupportedEncodingException e1) {

Log.e("UnsupportedEncodingException", e1.toString());

e1.printStackTrace();

} catch (ClientProtocolException e2) {

Log.e("ClientProtocolException", e2.toString());

e2.printStackTrace();

} catch (IllegalStateException e3) {

Log.e("IllegalStateException", e3.toString());

e3.printStackTrace();

} catch (IOException e4) {

Log.e("IOException", e4.toString());

e4.printStackTrace();

}

// Convert response to string using String Builder

try {

BufferedReader bReader = new BufferedReader(new InputStreamReader(inputStream, "utf-8"), 8);

StringBuilder sBuilder = new StringBuilder();

String line = null;

while ((line = bReader.readLine()) != null) {

sBuilder.append(line + "\n");

}

inputStream.close();

result = sBuilder.toString();

} catch (Exception e) {

Log.e("StringBuilding & BufferedReader", "Error converting result " + e.toString());

}

} // protected Void doInBackground(String... params)

最后,这里我们将解析返回,在这个例子中它是一个JSON数组然后关闭对话框:protected void onPostExecute(Void v) {

//parse JSON data

try {

JSONArray jArray = new JSONArray(result);

for(i=0; i 

JSONObject jObject = jArray.getJSONObject(i);

String name = jObject.getString("name");

String tab1_text = jObject.getString("tab1_text");

int active = jObject.getInt("active");

} // End Loop

this.progressDialog.dismiss();

} catch (JSONException e) {

Log.e("JSONException", "Error: " + e.toString());

} // catch (JSONException e)

} // protected void onPostExecute(Void v)} //class MyAsyncTask extends AsyncTask

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值