AsyncTask异步加载和Gson
public class MainActivity extends Activity {
private List<Goods> goods=new ArrayList<Goods>();
private ListView lv;
private SmartImageView smartImageView;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.lv);
adapter = new MyAdapter(goods, this);
lv.setAdapter(adapter);
//获得数据
huodeshuju();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Intent intent=new Intent(MainActivity.this,TwoActivity.class);
startActivity(intent);
}
});
}
//获得数据
private void huodeshuju() {
//使用异步
new AsyncTask<String, Void, String>(){
@Override
protected String doInBackground(String... params) {
/*try {
URL url=new URL(params[0]);
HttpURLConnection urlConnection=(HttpURLConnection) url.openConnection();
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
urlConnection.setRequestMethod("GET");
urlConnection.connect();
int code=urlConnection.getResponseCode();
if (code==200) {
InputStream inputStream=urlConnection.getInputStream();
BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
String readerline;
StringBuffer buffer=new StringBuffer();
while ((readerline=reader.readLine())!=null) {
buffer.append(readerline);
}
String str=buffer.toString();
return str;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
try {
HttpClient httpClient=new DefaultHttpClient();
HttpGet httpGet=new HttpGet(params[0]);
HttpResponse response = httpClient.execute(httpGet);
StatusLine statusLine=response.getStatusLine();
int code=statusLine.getStatusCode();
if (code==200) {
HttpEntity httpEntity=response.getEntity();
String str=EntityUtils.toString(httpEntity, "utf-8");
return str.toString();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
try {
JSONObject obj=new JSONObject(result);
JSONObject list=obj.getJSONObject("list");
JSONArray articles=list.getJSONArray("articles");
Type type=new TypeToken<List<Goods>>(){
}.getType();
Gson gson=new Gson();
List<Goods> goodss=gson.fromJson(articles.toString(), type);
for (Goods goods2 : goodss) {
String title=goods2.getTitle();
String litpic=goods2.getLitpic();
String typeid=goods2.getTypeid();
Goods goods3=new Goods(title, litpic, typeid);
goods.add(goods3);
}
//Log.i("++++++++", goods.toString());
//=======================
//必须刷新
adapter.notifyDataSetChanged();
//======================
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}.execute("http://101.200.142.201:8080/tqyb/newsList.json");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
AsyncTask异步加载和Gson的更多相关文章
- AsyncTask异步加载和HttpURLConnection网络请求数据
//获得网络数据 private void huodeshuju() { //这里是使用线程,已注释掉 /*new Thread(){ public void ...
- Android AsyncTask异步加载WebAPI
之前做的程序一直存在很多问题,因为需要加载的Activity需要从网络加载数据.并没有完全正确的使用异步的方法去加载! 之前用的虽然是AsyncTask,但是在加载完成的时候还是并没有使用AsyncT ...
- Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比--转载
在加载大量数据的时候,经常会用到异步加载,所谓异步加载,就是把耗时的工作放到子线程里执行,当数据加载完毕的时候再到主线程进行UI刷新.在数据量非常大的情况下,我们通常会使用两种技术来进行异步加载,一 ...
- Android开发--异步加载
因为移动端软件开发思维模式或者说是开发的架构其实是不分平台和编程语言的,就拿安卓和IOS来说,他们都是移动前端app开发展示数据和用户交互数据的数据终端,移动架构的几个大模块:UI界面展示.本地数据可 ...
- Android批量图片加载经典系列——使用LruCache、AsyncTask缓存并异步加载图片
一.问题描述 使用LruCache.AsyncTask实现批量图片的加载并达到下列技术要求 1.从缓存中读取图片,若不在缓存中,则开启异步线程(AsyncTask)加载图片,并放入缓存中 2.及时移除 ...
- Android 异步加载数据 AsyncTask异步更新界面
官方文档: AsyncTask enables proper and easy use of the UI thread. This class allows to perform backg ...
- AsyncTask实现网络图片的异步加载
想要实现网络中图片的加载,主线程是不行的,方法有两个,一个是使用线程Tread(),另一个就是使用AsyncTask,AsyncTask其实也是线程.我看过慕课网里边一个叫做<Android必学 ...
- AsyncTask使用实例,异步加载图片
在上一篇,详细介绍了AsynTask的基础知识.没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4892310.html 那么在这篇文 ...
- Android学习笔记_36_ListView数据异步加载与AsyncTask
一.界面布局文件: 1.加入sdcard写入和网络权限: <!-- 访问internet权限 --> <uses-permission android:name="andr ...
随机推荐
- Firebug在Firefox DevTools 中复活
英文:Firefox,编译:开源中国 链接:www.oschina.net/news/80230/firebug-lives-on-in-firefox-devtools 技术最前线转注:2016年1 ...
- MySQL管理_数据库启动与关闭
MySQL数据库服务器通常指的的是mysqld,而命令行mysql则是mysql客户端程序,这两个概念通常容易混淆.通常启动mysql服务器即是启动mysqld进程,mysqld启动后,可以通过mys ...
- 【转】Linux CentOS内核编译:下载CentOS源码、编译2.6.32-220的错误(apic.c:819 error 'numi_watchdog' undeclared)
一.下载CentOS源码 1.1 查看CentOS版本 cat /etc/issue 1.2 查看Linux内核版本 uname -r 1.3 下载 文件名:kernel-2.6.32-220.el6 ...
- Zookeeper全解析——Paxos作为灵魂(转)
原计划在介绍完ZK Client之后就着手ZK Server的介绍,但是发现ZK Server所包含的内容实在太多,并不是简简单单一篇Blog就能搞定的.于是决定从基础搞起比较好. 那么ZK Serv ...
- 【javascript基础】8、闭包
前言 函数和作用域啥的我们前面已经了解了,现在就要学习闭包了,这是一个挺晦涩的知识点,初学者可能会感觉不好理解,但是高手都不不以为然了,高手就给我提点意见吧,我和新手一起来学习什么是闭包. 例子 先不 ...
- .net 中生成二维码的组件
http://qrcodenet.codeplex.com/
- 分析Tornado的协程实现
转自:http://www.binss.me/blog/analyse-the-implement-of-coroutine-in-tornado/ 什么是协程 以下是Wiki的定义: Corouti ...
- 网络换行符替换为word换行符
在替换的页面上,查找里输入:^l,在替换里输入:^p,然后点击替换即可.
- Mantis 1.2.19 on Windows Server 2012 r2 datacenter 安装及配置随笔
一.前言 新的小团队需要搭建一个缺陷管理的工具,之前用过bugfree,感觉比较适合,但是 禅道不太适合,放弃之,于是又百度推荐的: .JTrac13.BugNet14.BugOnline15.eTr ...
- 终极优化_详解Win7旗舰版系统中可以关闭的服务
Win7旗舰版系统是一款功能强大的系统,不过对于很多用户很多功能却使用不上,而支持功能的很多服务也多少占用了系统资源,那么我们可以通过关闭一些不使用的服务来达到让win7系统运行速度加快的目的.下面小 ...