码迷,mamicode.com
首页 > 其他好文 > 详细

第十九讲:ListView与Adapter(一)

时间:2014-11-02 09:29:53      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   io   color   os   ar   使用   

天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为。——《孟子·告子下》


本讲内容:ListView列表组件 与 Adapter适配器的用法


一、ListView列表组件:

作用:ListView通常有两个职责。
(1)将数据填充到布局。
(2)处理用户的选择点击等操作(通过绑定监听器)。

创建一个ListView需要3个元素。
(1)ListView展示每一列的View。
(2)填入View的数据或者图片等。
(3)连接数据与ListView的适配器。

ListView的使用步骤:

(1)定义一个data
(2)创建一个Adapter对象

(3)绑定适配器

二、Adapter适配器:

什么是Adapter适配器?适配器就是一个连接数据和AdapterView(ListView就是一个典型的AdapterView,前面我们学过的Spinner也是)的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便。Android中提供了很多的Adapter,各种Adapter转换的方式和能力不一样,下面介绍常用的几个。

Adapter 作用
ArrayAdapter<C> 用来绑定一个数组,支持泛型操作
SimpleAdapter 用来绑定在xml中定义的控件对应的数据
SimpleCursorAdapter 用来绑定游标得到的数据
BaseAdapter 通用的基础适配器


我们通过下面例子感受一下,代码的讲解都写在注释里了。

三、 ListView使用ArrayAdapter

ArrayAdapter可以实现简单的ListView的数据绑定。默认情况下,ArrayAdapter绑定每个对象的toString值到layout中预先定义的TextView控件上。ArrayAdapter的使用非常简单。

下面是res/layout/activity_main.xml 布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.text.MainActivity$PlaceholderFragment" >
   
 <TextView 
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:text="零基础学Android"
     android:gravity="center"
     android:textSize="30sp"
     android:textColor="#ff00ff"/>
 
 <ListView 
     android:id="@+id/listViewId"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"/>
    
</LinearLayout>

下面是MainActivity.java主界面文件:

public class MainActivity extends Activity {
	private ListView listView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		listView = (ListView) findViewById(R.id.listViewId);
		// 定义数组
		String[] data = { "零基础学Android 第一讲", "零基础学Android 第二讲",
				          "零基础学Android 第三讲", "零基础学Android 第四讲",
				          "零基础学Android 第五讲", "零基础学Android 第六讲", 
				          "零基础学Android 第七讲", "零基础学Android 第八讲",
				          "零基础学Android 第九讲", "零基础学Android 第八讲"};
		//为ListView提供数组适配器
		ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked, data);
		//为ListView绑定适配器
		listView.setAdapter(adapter);
		//设置为单选
		listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
		
		//为ListView设置列表项点击监听器
		listView.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?>parent, View view,int position, long id) {
				//点击后在标题上显示点击了第几行                  
				setTitle("你点击了第"+position+"行");
			}
		});
		
		//为ListView设置长按监听器
		listView.setOnItemLongClickListener(new OnItemLongClickListener() {
			@Override
			public boolean onItemLongClick(AdapterView<?> parent, View view,
					int position, long id) {
				Toast.makeText(getApplicationContext(),"您长按的是:"+((TextView) view).getText(), Toast.LENGTH_SHORT).show();	
				return false;
			}
		});
	}
}

ArrayAdapter<CharSequence>,具有三个参数: 
第一个是conetxt,也就是application的环境,可以设置为this,也可以通过getContext()获取. 
第二个参数是ListView未展开的UI格式 ,注意是Android系统内自定义的(我们也可以自定义ListView的UI格式)
第三个参数是从data source中的array ID也可以自定义的data


通常我们使用Android提供的资源,除了例子中所用的,常用的还有如下几种,可实现带RadioButton和CheckBox的ListView。
一般  android.R.layout.simple_list_item_1
(1)通过指定android.R.layout.simple_list_item_checked这个资源,实现带选择框的ListView。
需要用setChoiceMode()方法设定选择为多选还是单选,否则将不能实现选择效果 
(2)通过指定android.R.layout.simple_list_item_multiple_choice这个资源实现带CheckBox的ListView。
同样的,需要用setChoiceMode()方法来设置单选或者多选
(3)通过指定android.R.layout.simple_list_item_single_choice这个资源实现带RadioButton的ListView。这里要注意的是,
这里并不是指定了单选。是多选还是单选要通过setChoiceMode()方法来指定


下面是运行结果:

bubuko.com,布布扣

bubuko.com,布布扣


本讲到这里,谢谢大家!

第十九讲:ListView与Adapter(一)

标签:android   style   blog   http   io   color   os   ar   使用   

原文地址:http://blog.csdn.net/liguojin1230/article/details/40683647

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!