ListView是一种用于垂直显示的列表控件,如果显示内容过多,则会自动出现垂直滚动条,每一行是一个View对象,在每一行上可以放置任何组件,Adapter适配器是数据和UI的桥梁,为数据显示提供了统一的封装。
常用的Adapter有:
ArrayAdapter
:用来绑定一个数组,支持泛型操作,最为简单,只能展示一行字。
SimpleAdapter:用来绑定在布局xml中定义的控件对应的数据,有好的扩充性,可以自定义出各种效果
BaseAdapter:是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性
ArrayAdapter的使用:
该类的构造方法为:public ArrayAdapter(Context context, int textViewResourceId, List objects)其中参数1为上下文;参数2为布局文件,通常使用系统提供的单文字布局(android.R.layout.simple_list_item_1);参数3为数据,通常为List集合或者数组。
1、简单的一个列表实现:
布局文件:
复制代码
1
5
复制代码
数据添加和适配:
复制代码
1 //新建一个list存放数据
2 List listdata=new ArrayList();
3 listdata.add("东小东1");
4 listdata.add("东小东2");
5 listdata.add("东小东3");
6 listdata.add("叮叮当当");
7 listdata.add("咚咚咚嘻嘻嘻");
8
9 //列表
10 main_list=(ListView)findViewById(R.id.main_list);
11 //android.R.layout.simple_list_item_1不可改成自定义布局文件
12 final ArrayAdapter adp2=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,listdata);
13 main_list.setAdapter(adp2);
复制代码
listview的事件监听:
复制代码
1 //点击事件
2 main_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
3 @Override
4 public void onItemClick(AdapterView> parent, View view, int position, long id) {
5
6 Toast.makeText(MainActivity.this,"你点击了:"+position+"项 内容为:"+adp2.getItem(position),Toast.LENGTH_SHORT).show();
7
8 }
9 });
10
11 //长按事件
12 main_list.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
13 @Override
14 public boolean onItemLongClick(AdapterView> parent, View view, int position, long id) {
15
16 Toast.makeText(MainActivity.this,"你长按了:"+position+"项 内容为:"+adp2.getItem(position),Toast.LENGTH_SHORT).show();
17
18 return true;
19 }
20 });
复制代码
2、下拉选择栏实现和输入匹配:
布局文件:
复制代码
1
6
7
8
9
10
16
17
22
23
复制代码
简单逻辑实现:
复制代码
1 /配置一个公用的数组做测试
2 //arrayadapter实现字符串适配
3 String[] str_arr={"东小东","东东","大东东","叮叮当当"};
4
5 //选择框
6 main_sp=(Spinner)findViewById(R.id.main_spinner);
7 ArrayAdapter adp=new ArrayAdapter(MainActivity.this,android.R.layout.simple_spinner_item,str_arr);
8 adp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
9 main_sp.setAdapter(adp);
10
11 //输入提示
12 main_atv=(AutoCompleteTextView)findViewById(R.id.main_autotv);
13 ArrayAdapter adp2=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,str_arr);
14 main_atv.setAdapter(adp2);
15
16 //按钮监听,获取两个框的值
17 findViewById(R.id.main_but).setOnClickListener(new View.OnClickListener() {
18 @Override
19 public void onClick(View v) {
20 String strsp=main_sp.getSelectedItem().toString().trim();
21 String stratv=main_atv.getText().toString().trim();
22 main_tv.setText(strsp+"\n"+stratv);
23
24
25 }
26 });
复制代码
SimpleAdapter的使用:
该类的构造方法为:public SimpleAdapter(Context context, List Extends Map> data, int resource, String[] from, int[] to)其中参数1为上下文;参数2为数据,一个Map的list,List里每一项都是map对象,一个map对象就表示listview中一行的内容;参数3为布布局资源,可以知己写也可以使用系统提供的;参数4为map里的键,其对应着参数5中布局资源的每一个显示控件id。
建立listview中每一个item的基本布局:
新建一个xml文件即可
主布局文件:
复制代码
1
5
复制代码
数据设置和适配及listview事件监听:
复制代码
1 String str_con="一秒就成为了下一秒的过去,既然很多东西注定要失去的,那么,我们唯一可以做到的就是不轻易忘记。“读过一句话,当你总是缅怀过去的时候,证明你现在过的并不好。所以,美好的回忆可以,但绝不留恋。要永远憧憬,永远在现在努力。";
2
3 //新建一个list存放数据
4 List