异步加载数据

来源:互联网 发布:网络宣传公司 编辑:程序博客网 时间:2024/04/30 15:37
class MyAsycTask extends AsyncTask<String, String, News> {

@Override
protected News doInBackground(String... params) {
// TODO Auto-generated method stub
return getNews(params[0]);
}

@Override
protected void onPostExecute(final News news) {
super.onPostExecute(news);
lv.setAdapter(new MyLvAdapter(MainActivity.this, news));
lv.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Intent intent=new Intent(MainActivity.this, DetailActivity.class);
intent.putExtra("id", news.data.get(arg2).ID);
startActivity(intent);
}
});
}
}

/**
* 解析获得数据
*
* @param string
* @return
*/
public News getNews(String string) {
try {
URL url = new URL(string);
HttpURLConnection openConnection = (HttpURLConnection) url
.openConnection();
openConnection.setConnectTimeout(5000);
int responseCode = openConnection.getResponseCode();
if (responseCode == 200) {
InputStream inputStream = openConnection.getInputStream();
byte[] arr = new byte[1024];
int len;
ByteArrayOutputStream stream = new ByteArrayOutputStream();
while ((len = inputStream.read(arr)) != -1) {
stream.write(arr, 0, len);
}
String json = stream.toString();
Gson gson = new Gson();
News news = gson.fromJson(json, News.class);
return news;
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
0 0