ListView
来源:互联网 发布:手机淘宝申请账号注册 编辑:程序博客网 时间:2024/06/14 07:29
一:ListView 介绍
ListView:是以列表的方式显示数据的组件特点:每一个列表项独占一行,每行的布局都相同,数据和布局分离,数据来自适配器
1.ArrayAdapter类
数组适配器类,该类负责将数组指定布局方式显示,通过与listview等控件相关联,在列表类型的控件中按指定布局样式显示数组中的数据public ArrayAdapter(Context context, int textViewResourceId, T[] objects)
第一个参数:上下文对象,当前窗口对象
第二个参数:标签控件的资源索引值
第三个参数:数组对象
2.常用方法 Object getItemAtPosition(int position)
获取当前列表项3.onItemClick接口
ListView的单击事件,当用户按下列表选项触发的是单击事件public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
}
第一个参数:当前列表对象,如ListView对象
第二个参数:view,被单击的列表项对象,如TextView
第三个参数:i,被单击的列表项在列表中所处的行的索引值
----------------------------------------------------------
1)数据源
private String[] days = {"星期一","星期二","星期三","星期四",
"星期五","星期六","星期天"};
lv = (ListView)findViewById(R.id.listview);
2)setAdapter与listview绑在一起
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,//布局文件
days));//源数据的字符串数组
3)监听listview的选取事件
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String tv = (String)lv.getItemAtPosition(i);
Log.i("xxx",tv);
}
});
二:ListView 常用的Adapter
Adapter:是连接数据与显示View的适配器接口,是数据与UI的纽带1)ArrayAdapter 支持泛型操作,只能展示一行字
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,//列表每一行的布局,只显示一行文字
days));//数据源,是一个字符串数组
使用了ArrayAdapter来装配数据,效果如下
2)SimpleAdapter 可以自定义各种效果
例:带图片的ListView
左边显示图片,在图片的右边显示文字
用Map(String,Object> item来保存列表中每一项需要显示的图片和文字
在用SimpleAdpater将map数据写入自定义的布局,就可以显示列表了
-------------------------------------------------------------
SimpleAdapter的数据一般都是HashMap构成的ArrayList, list的每一节对应listView的每一行
HashMap的每个键值映射到布局文件中对应的id上
SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)
参数:
1,context:上下文。
2,data:基于Map的list。Data里边的每一项都和 ListView里边的每一项对应。Data里边的每一项都是一个Map类型,这个Map类里边包含了ListView每一行需要的数据。
3,resource :就是一个布局layout,可引用系统提供的,也可以自定义,如cat.xml
4,from:这是个名字数组,每个名字是为了在 ArrayList数组的每一个item索引Map<String,Object>的Object用的。即 map 中得key值
5,to:里面是一个资源数组。这些资源是以id的形式来表示的。例如:R.id.image, R.id.title
a)自定义布局cat.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/image"
android:layout_width="100dip"
android:layout_height="100dip"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
app:srcCompat="@mipmap/cat1" />
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/image"
android:layout_marginBottom="23dp"
android:textSize="30dip"
android:layout_toEndOf="@+id/image"
android:text="TextView" />
</RelativeLayout>
b)代码直接继承ListActivity,方便显示
public class SimpleAdapterActivity extends android.app.ListActivity { private int[] image = { R.mipmap.cat1, R.mipmap.cat2, R.mipmap.cat3, R.mipmap.cat4, R.mipmap.cat5, }; private String[] title = {"猫大","猫二","猫三","猫四","猫五"}; ArrayList<Map<String,Object>> mData = new ArrayList<Map<String,Object>>(); private ListView lv = null; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); lv = getListView(); //1)填冲Map获取数据 for(int i=0; i<title.length;i++){ Map<String,Object> item = new HashMap<String,Object>(); item.put("image",image[i]); item.put("title",title[i]); mData.add(item); } //2)adapter 绑定数据和View SimpleAdapter adapter = new SimpleAdapter(this, mData, R.layout.cat, new String[]{"image","title"}, new int[]{R.id.image, R.id.title}); //3)设置adapter,将cat布局显示到listView当中 lv.setAdapter(adapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Toast.makeText(SimpleAdapterActivity.this, "你选中了"+title[i], Toast.LENGTH_LONG).show(); } }); }}
3)BaseAdapter
参考:http://www.xuanyusong.com/archives/91
:http://blog.csdn.net/harvic880925/article/details/17258789
- listview
- listview
- listview
- ListView
- ListView
- listview
- listview
- listView
- ListView
- ListView
- ListView
- listview
- LIstView
- ListView
- listview
- ListView
- ListView
- ListView
- Java学习(2)-条件语句
- android自定义View之(四)------一键清除动画
- xml文件--DOM方式解析xml
- Android应用内在线查看PDF文件
- Eclipse中找到当前文件在硬盘中的位置
- ListView
- php调用类中属性和函数的常用方法->_=>_::_$this->
- eclipse调试debug时找不到源码source not found
- 严蔚敏版数据结构学习笔记(5):串
- Activiti(工作流)如何关联业务表
- android笔记:长按APP图标弹出快捷方式(shortcuts)
- win和Linux间的文件传输:rz和sz的安装
- 基于nodeJS爬虫
- bootstrap validate表单验证