ListView的简单使用
- 摆出一个ListView
- 需要一个数据适配器: ArrayAdapter或者SimpleAdapter
- 初始化 ArrayAdapter或者SimpleAdapter。
- LIstView加载适配器
//ArrayAdapter使用于纯文字的列表
//其中ArrayAdapter的构造函数
/*
*ArrayAdapter(上下文,当前ListView加载的每一项所需要对应的布局文件,数据源(数组))
*/
String[]arr={
"one","two","three","four","five"};
ArrayAdapter<T> arr_adapter=new ArrayAdapter<>(this,R.layout.simple_list_item1,arr);
listview.setAdapter(arr_adapter);
//SimpleAdapter适用于比较复杂的ListView格式,类似于商品的图片+文字之类的。
//其中SimipleAdapter的构造函数
/*
*SimpleAdapter(context,data,resource,from,to)
*context:上下文
*data:数据源,是List<? extends Map<String,?>>,data中的每个map,都需要有一个
以from中所有字符串为key,to中所有Object为value的 pair<String from from,Object from to>.
*resource:是布局文件,代表ListView中的每一项所遵循的布局,可以是系统的,也可以是你自己写的。
*from:字符串数组
*to:int数组,绑定数据视图中的id,人话:你的布局文件中所有元素的id所构成的int数组
*所以from数组和to数组是一一对应,相当于映射
*所以data中的map元素,只需要跟from数组的对应即可,因为from与to一一对应。
*data中的map元素的value相当于资源,放什么文字,放什么图片,都是它控制的。
*/
//比如现在,我规定ListView中每一个都有一个ImageView和一个TextView
String[] from={
"picture","text"};
int[] to={R.id.iv1,R.id.tv1};
List < Map<String,Object> > data=ArrayList<>();
for(int i=0;i<20;i++){
Map<String,Object> map=new Map<>();
map.put("picture",图片所在位置);
map.put("text","this is "+i);
data.add(map);
}
SimpleAdapter sim_adapter=new SimpleAdapter(this,data,布局文件,from,to);
listview.setAdapter(sim_adapter);
//而写商品列表,可以用RelativeLayout尝试一下
对ListView的每一项的点击事件设置监听器,和对ListView的滚动状态设置监听器。
//对于ListView,单个条目的点击事件对应的监听器是 OnItemClickListener