标签: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对象
二、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>
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()方法来指定
下面是运行结果:
本讲到这里,谢谢大家!
标签:android style blog http io color os ar 使用
原文地址:http://blog.csdn.net/liguojin1230/article/details/40683647