`
QCheng5453
  • 浏览: 16632 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android笔记——Day9 *Android异步操作 *Http操作基础 *ListView使用方法

 
阅读更多

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的方法也有很多,这里只是介绍一种,这种方法比较全面。

 

 

分享到:
评论

相关推荐

    安卓Android源码——listview实现图片的异步加载.zip

    本资料“安卓Android源码——listview实现图片的异步加载.zip”应该包含一个示例项目,演示了如何在ListView中高效地加载网络图片。 1. **异步加载原理**:异步加载是为了避免主线程(UI线程)被阻塞,将耗时的图片...

    安卓Android源码——动态ListView,支持异步更新列表,异步更新图片.zip

    本项目“安卓Android源码——动态ListView,支持异步更新列表,异步更新图片”提供了一种解决方案,通过异步加载机制优化用户体验。 1. **ListView的工作原理**: - ListView通过复用convertView来提高性能,减少...

    Android学习笔记(十)——实现新闻列表

    【第一部分】历史文章: Android学习笔记(一)——创建第一个Android项目 ...Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share

    安卓Android源码——listview实现图片的异步加载.rar

    这个压缩包"安卓Android源码——listview实现图片的异步加载.rar"可能包含了实现这一功能的源代码示例。 异步加载图片的基本思想是将耗时的网络请求或本地磁盘读取操作放到后台线程进行,防止阻塞UI更新。以下是...

    Android源码——ListView分页功能源码.zip

    这个压缩包“Android源码——ListView分页功能源码.zip”可能包含了实现这一功能的具体代码示例。 在Android中实现ListView分页,通常有以下几种方法: 1. **使用Adapter和Pagination**: - 你需要创建一个自定义...

    安卓Android源码——Listview分页加载数据.zip

    9. **性能优化**:ListView的性能可以通过使用ViewHolder模式来提升,它避免了频繁的findViewById操作,减少了内存分配,提高列表滑动的流畅性。 10. **实际应用**:在实际开发中,这种分页加载数据的方法常用于...

    Android Training学习笔记——Navigation 参考源码(ListView版)

    这篇“Android Training学习笔记——Navigation 参考源码(ListView版)”深入探讨了如何使用Navigation构建一个基于ListView的导航系统。我们将从以下几个方面来详细讨论这个主题: 1. **Navigation组件简介** ...

    安卓Android源码——listView1.rar

    这份"安卓Android源码——listView1.rar"压缩包很可能是包含了一个关于ListView使用和自定义的示例项目。在Android开发中,理解ListView的工作原理以及如何有效地优化其性能是非常重要的知识点。 1. **ListView基本...

    安卓Android源码——listView.rar

    这份"安卓Android源码——listView.rar"压缩包很可能包含了一份关于ListView自定义实现和优化的源代码示例。下面我们将深入探讨ListView在Android中的工作原理、常见用法以及如何进行性能优化。 首先,ListView基于...

    Android源码——ListView下拉刷新 Demo_new_09.zip

    "Android源码——ListView下拉刷新 Demo_new_09.zip" 这个标题表明我们讨论的是一个关于Android平台的源代码示例,特别关注的是ListView组件的下拉刷新功能。"Demo_new_09"可能指的是这个示例的版本或者是一个特定的...

    安卓Android源码——ListView上下翻页效果.zip

    这个压缩包"安卓Android源码——ListView上下翻页效果.zip"很可能是包含了一个示例项目,演示了如何在ListView中实现上下翻页的效果。这样的效果通常涉及到滚动监听、数据加载优化以及用户体验提升等方面。下面将...

    Android源码——listView学习源码.zip

    本资源"Android源码——listView学习源码.zip"包含了对ListView工作原理的详细解析,以及可能的实践代码示例。 ListView的核心功能在于它可以动态加载和回收视图,以优化内存使用。当用户滚动列表时,ListView会...

    安卓Android源码——动态ListView,支持异步更新列表,异步更新图片.rar

    本项目着重讲解如何在Android应用中实现一个动态ListView,同时支持异步更新列表数据和图片。 首先,我们来看动态ListView的核心组件和原理。ListView的动态加载主要依赖于Adapter,它是一个连接数据源与视图的桥梁...

    安卓Android源码——ListView下拉刷新Demo.zip

    3. **ListView**:ListView是Android中用于显示长列表的标准组件,它可以高效地处理大量数据。在这个Demo中,ListView被放在SwipeRefreshLayout内,用于展示数据。 4. **Adapter**:ListView的工作原理是通过...

    安卓Android源码——仿iphone的listview下拉更新.zip

    本资源“安卓Android源码——仿iphone的listview下拉更新.zip”提供了一个示例,帮助开发者了解如何在Android的ListView中实现这种效果。以下是关于这个主题的详细知识点: 1. **ListView组件**:ListView是Android...

    安卓Android源码——android相册系统(用Matrix实现).zip

    AsyncTask、Handler或使用现代库如RxJava可以实现异步操作,提高应用性能。 9. **图片选择和裁剪**: 自定义相册系统可能包含图片选择和裁剪功能,这涉及到Intent的使用,比如ACTION_PICK和ACTION_IMAGE_CAPTURE,...

    安卓Android源码——listview获取网络图片缓存优化.zip

    本压缩包"安卓Android源码——listview获取网络图片缓存优化.zip"显然是为了演示如何优化ListView中加载网络图片的过程,通过缓存策略来提高用户体验。其中包含的项目名为"LazyLoaderDemo",暗示了这是一个懒加载的...

    android listView 异步加载图片

    这里的“android listView 异步加载图片”指的是在不阻塞UI线程的情况下,从网络、本地存储或其他来源加载图片到ListView中的技术。 这篇名为“ImageLoader”的Java文件很可能就是一个实现图片异步加载的工具类。在...

Global site tag (gtag.js) - Google Analytics