- 浏览: 15893 次
最新评论
Android笔记——Day9 *Android异步操作 *Http操作基础 *ListView使用方法
- 博客分类:
- Android笔记
1、Android异步操作
··之前说过用Thread和Handler可以再Android中实现异步处理,这里讨论的使用AsyncTask类来实现异步处理,相比之下,运用这种方法来完成异步操作更为简单。贴个地址:http://blog.csdn.net/mylzc/article/details/6772129
1)AsyncTask类中有许多函数,在执行AsyncTask时对应的条用顺序为:
onPreExxcute()-->doInBackground()-->onPostExecute();
2)onRreExecute是来准备开启一个新线程的,它是在UI线程中完成的,因此可以修改布局。
3)doInBackground是你想要异步执行的内容,它不是在UI线程中,因此不可以修改布局。
4)onPostExecute是任务结束后执行的内容,它是在UI线程中执行,因此也可以修改布局。
5)如果想要在doInBackground运行过程中更新布局,可以再doInBackground中调用publishProgress函数,该函数调用时会执行onProgressUpdate函数,该函数可以修改UI布局。
6)上述几个函数实际上都带有参数,这些参数是定义AsyncTask子类时定义的。
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findViewById(R.id.click).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new async().execute();//执行任务,execute里面实际上是第一个参数 } }); } class async extends AsyncTask<Void , Integer , Void> {//三个参数类型 @Override protected Void doInBackground(Void... params) {//返回值是第三个参数 // TODO Auto-generated method stub for(int i = 0; i<=50 ; i++){ try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } publishProgress(i);//传入的参数是第二个参数 } return null; } @Override protected void onProgressUpdate(Integer... values) { TextView text = (TextView)findViewById(R.id.click); text.setText(""+values[0]); super.onProgressUpdate(values); } }
2、Http基础操作
1)常用的发送Http请求的方式有两种,get和post
2)想要获得http返回的数据,首先要生成一个请求包。
3)生成一个客户端对象。
4)客户端执行请求包。
5)得到响应对象。
6)从响应对象获取返回数据。代码如下:(Mars老师代码)
requestButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //生成一个请求对象 HttpGet httpGet = new HttpGet("http://www.baidu.com"); //生成一个Http客户端对象 HttpClient httpClient = new DefaultHttpClient(); //使用Http客户端发送请求对象 InputStream inputStream = null; try { httpResponse = httpClient.execute(httpGet); //获取数据流,将数据流转为字符串 httpEntity = httpResponse.getEntity(); inputStream = httpEntity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String result = ""; String line = ""; while((line = reader.readLine()) != null){ result = result + line; } Toast.makeText(MainActivity.this, result, 2); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } finally{ try{ inputStream.close(); } catch(Exception e){ e.printStackTrace(); } } } });
最后再贴个地址...http://www.oschina.net/code/snippet_12_5909
3、ListView的使用方法
1)要实现ListView,一种是直接使用ListView创建,另一种是将Activity继承ListActivity,这里只谈第一种,第二种感觉实际用处不大。
2)首先需要创建一个包含ListView的布局文件。
3)然后需要在创建一个布局文件,这个布局文件实际上是用来显示ListView中每一个元素的布局。
4)然后需要在Activity中创建一个ArrayList,ArrayList中每个元素都是一个HashMap,HashMap中可以包含多个键值对。
5)创建一个SimpleAdapter对象,这个对象是用来将ListView中显示的内容和控件一一对应起来,最后调用ListView的setAdapter函数即可。
包含ListView 的布局文件:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"/> </LinearLayout>
ListView中每个元素的布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:id="@+id/text1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/text2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
Activity中的代码:
ArrayList<HashMap<String, String>> arrayList = new ArrayList<HashMap<String, String>>();//创建一个ArrayList对象 ListView list = (ListView)findViewById(R.id.list); HashMap<String, String> hashMap1 = new HashMap<String, String>(); hashMap1.put("name", "zhangsan"); hashMap1.put("age", "10"); arrayList.add(hashMap1); HashMap<String, String> hashMap2 = new HashMap<String, String>(); hashMap2.put("name", "wanger"); hashMap2.put("age", "20"); arrayList.add(hashMap2); SimpleAdapter adapter = new SimpleAdapter(this,arrayList,R.layout.layout4list,new String[]{"name","age"},new int[]{R.id.text1,R.id.text2});//创建一个SimpleAdapter,这位ListView的产生带来的方便 list.setAdapter(adapter); //android.widget.SimpleAdapter.SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
需要注意的是Adapter的种类有很多,因此创建ListView的方法也有很多,这里只是介绍一种,这种方法比较全面。
发表评论
-
SurfaceView的使用
2012-09-07 18:51 870SurfaceView的使用 先贴上几个地址: ht ... -
传感器的应用开发
2012-09-07 14:55 628传感器的应用开发 先贴几个地址 http://www ... -
Android笔记——NewDay1 AppWidget的一个更新小问题
2012-08-20 19:17 809之前在写一个AppWidget,需要根据按键显示不同的内容,其 ... -
Android笔记——Day10 *popUpWindow基本使用 *Notification基本使用
2012-07-20 07:40 931前十天去了北京,今天 ... -
Android笔记——Day8 *Animation的使用 *实现用户定位
2012-07-07 00:21 814反正每天看看Mars老师视频,完了自己在总结一下,感觉挺好的- ... -
Android笔记——Day7 *AppWidget的使用初步 *Android文本输入输出时的中文编码问题
2012-07-05 02:31 9031、AppWidget的使用初步 先贴个地址,这个地址里面 ... -
Android笔记——Day6 *Service初步 *利用序列化在Activity之间交换数据
2012-07-03 18:12 900昨天貌似ITEYE用CSDN的号登不上去,博客没法写了,现在又 ... -
Android笔记——Day5 *SQLite基本用法 *Broadcast广播机制 *WiFi基础
2012-07-01 00:38 1317//本文中代码基本上是Ma ... -
Android笔记——Day4 *Android对SD卡的操作
2012-06-29 23:03 1677前两天去苏州玩了,今天终于又可以学Android写博客了--# ... -
Android笔记——Day3 *异常处理 *Java中的io *匿名内部类
2012-06-27 10:03 10171、异常处理。 ··Java中含有异常处理机制。 ·· ... -
Android笔记——Day2 *Java中类的继承 *多线程Handler
2012-06-25 22:48 8791、Java中类的继承。 ··Java中类的继承所产生的访 ... -
Android笔记——Day1 *Activity生命周期 *Activiity切换效果
2012-06-24 22:37 10711、Android中Activity的生命周期。 http ...
相关推荐
安卓Android源码——动态ListView,支持异步更新列表,异步更新图片.rar
安卓Android源码——listview实现图片的异步加载.zip
安卓Android源码——动态ListView,支持异步更新列表,异步更新图片.zip
安卓Android源码——listview实现图片的异步加载.rar
Android源码——listView学习源码.zip
安卓Android源码——使用listView实现的树状结构.zip
【第一部分】历史文章: Android学习笔记(一)——创建第一个Android项目 ...Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share
安卓Android源码——listView.rar
Android源码——ListView分页功能源码.zip
Android 异步加载图片,对ListView的异步加载图片的功能演示,主要根据url读取图片返回流的方法。为了方便演示,将请求图片的链接先固定,每读取好一个图片就更新,界面比较简单,当然你可以做成比较好的,像很多好...
安卓Android源码——Listview分页加载数据.zip
安卓Android源码——listview快速滑动,修改默认的滑动条.rar
安卓Android源码——ListView滚动气泡提示.rar
安卓Android源码——ListView下拉刷新 Demo.zip
安卓Android源码——listView1.rar
安卓Android源码——ListView滚动气泡提示.zip
安卓Android源码——重写listview实现下拉刷新.zip
安卓Android源码——listview获取网络图片缓存优化.zip
安卓Android源码——listView学习源码.zip